Я пишу программу на Java, которая просто читает содержимое входного файла и записывает содержимое в другой файл.Программа будет читать и записывать целые числа и пропустить все остальное.Проблема, с которой я сталкиваюсь, заключается в том, что программа завершит работу при чтении нецелого числа.
Мне нужна программа для чтения всех целых чисел, пропуска всего остального, продолжения чтения целых чисел, записи всех целых чисел в файл и вывода нецелых чисел в терминал.
Входной файлсодержит следующее:
2
1023
-56
84781
0
-9371
Rats
10
5
Программа запустится, если Rats удаляется из входного файла, но я не уверен, что все целые числа записываются в файл.Этот файл является двоичным файлом, и когда я запускаю 'od outputFileName.bin', он отображается на терминале:
0000000 000000 002400
0000004
Я ожидал увидеть больше, чем это.Если я изменю код для записи в текстовый файл, используя
input.nextLine();
output.println(line);
, то все целые числа будут записывать в выходной файл.
Вот мой код:
import java.io.*;
import java.util.Scanner;
class DataTranslator {
public static void main(String[] args) {
Scanner input = null;
Scanner user = null;
PrintWriter output = null;
String inputFileName;
String outputFileName;
try {
// Create a Scanner for user input
user = new Scanner(System.in);
// Prepare the input file
System.out.print("Input File --> ");
inputFileName = user.nextLine().trim();
File file = new File(inputFileName);
input = new Scanner(file);
// Prepare the output file
System.out.print("Output File --> ");
outputFileName = user.nextLine().trim();
output = new PrintWriter(outputFileName);
} catch (IOException e) {
System.out.println("Problem opening file.");
System.out.println(e.getMessage());
if (input != null)
input.close();
if (output != null)
output.close();
if (user != null)
user.close();
return;
}
// processing loop
try {
// for each line of input
while (input.hasNextLine()) {
int line = Integer.parseInt(input.nextLine().trim());
// input.nextLine();
// output.println(line);
DataOutputStream dataOut = new DataOutputStream(
new BufferedOutputStream(new FileOutputStream(outputFileName)));
dataOut.writeInt(line);
System.out.println(line);
dataOut.close();
}
} catch (IOException e) {
System.out.println("File I/O Error");
System.err.println(e.getMessage());
} catch (NumberFormatException e) {
System.out.print("Poor input data ");
System.err.println(e.getMessage() + ", this will not work");
// e.printStackTrace();
} finally {
// close the files
if (input != null)
input.close();
if (output != null)
output.close();
if (user != null)
user.close();
}
}
}
Спасибо за любую помощь.
Тони