我正在用Java编写一个程序,只读取输入文件的内容并将内容写入另一个文件,程序将读入并写出整数,并将跳过其他所有内容,遇到的问题是程序将在读取非整数时退出,需要程序读取所有整数,跳过其他所有内容并继续读取整数,并将所有整数写入文件并将非整数回显到终端
输入文件包含以下内容:
2
1023
-56
84781
0
-9371
Rats
10
5
该文件是一个二进制文件,当我运行'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();
}
}
}
发布于 2018-08-27 14:20:07
只需将CATCH子句添加到尝试-CATCH块中即可,所以你的应用程序不会破坏数字格式的异常
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 (NumberFormatException ex) {
// ignore exception or whatever you want
} 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;
}
发布于 2018-08-27 15:06:18
试试以下代码:
while (input.hasNextLine()) {
try {
int line = Integer.parseInt(input.nextLine().trim());
DataOutputStream dataOut = new DataOutputStream(
new BufferedOutputStream(new FileOutputStream(outputFileName)));
dataOut.writeInt(line);
System.out.println(line);
dataOut.close();
}catch(NumberFormatException ne){
continue;
}
}
https://stackoverflow.com/questions/-100002430
复制相似问题