Пока пишу c/c++
код это довольно удобно использовать freopen (). Пожалуйста, посмотрите следующий фрагмент кода —
int main(){
int n1, n2, result;
freopen("input.txt", "rb", stdin);
freopen("output.txt", "wb", sdtout);
while(scanf("%d %d", &n1, &n2)==2 && n1>0 &&n2>0){
...
...
...
printf("%d\n", result);
}
return 0;
}
Использование freopen()
этот способ очень полезен, когда мы пытаемся отладить / протестировать небольшое консольное приложение. Мы можем поместить образец ввода в ‘Input.txt’ файл один раз и повторно использовать их каждый раз вместо ввода вручную в терминале / консоли. И так же мы можем напечатать вывод в «output.txt‘ файл.
Сейчас я ищу предисловие аналогичного типа решения в Джава так что я могу перенаправить ввод и вывод в текстовый файл. Моя цель — упростить отладку небольшой консоли / программы при манипулировании некоторыми данными. Предоставление этих данных на терминал / консоль периодически, как ввод, несколько громоздко. Кто-нибудь может предложить несколько хороших советов для этого?
Для System.out
System.setOut(new PrintStream(new File("output-file.txt")));
Для System.err
System.setErr(new PrintStream(new File("err_output-file.txt")));
Для System.in
System.setIn(new FileInputStream(new File("input-file.txt")));
* сбросить обратно на консоль
System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));
System.setErr(new PrintStream(new FileOutputStream(FileDescriptor.out)));
System.setIn(new FileInputStream(FileDescriptor.in));
Вы можете переназначить потоки используя System.setIn
а также System.setOut
.
System.setIn(new FileInputStream(new File("input.txt")));
System.setOut(new PrintStream(new File("output.txt")));
Для получения данных из файла, а не ввода пользователя, вам просто нужно немного изменить то, что вы делаете, когда создаете свой сканер.
импорт java.io. *; для некоторых классов сделайте это:
try{
Scanner input = new Scanner(new File("input_file_name.in"));
}
catch(FileNotFoundException e){
e.printStackTrace();
}
Затем просто используйте сканер, как обычно, и он будет читать из файла.
Для записи в файл данных, а не в стандартный вывод, вы можете сделать это, чтобы изменить стандартный вывод на файл данных:
try{
FileOutputStream f = new FileOutputStream(new File("output_file_name.out"));
PrintStream p = new PrintStream(f);
System.setOut(p);
}
catch(Exception e){
e.printStackTrace();
}
Все операции с System.out.print () и System.out.println () будут записаны в файл.