输入文件ViewOrder.dat
包含
inv1102;p1600;brush;2;26.0;Partially Full
这是java代码
public void viewBackOrder() {
File fileViewOrder = new File("ViewOrder.dat");
File fileViewBackOrder = new File("ViewBackOrder.dat");
Scanner input = new Scanner(System.in);
String orderNo, itemNo, itemName, itemQty, itemPrice, status;
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fileViewOrder)));
BufferedWriter bw = new BufferedWriter(new FileWriter(fileViewBackOrder));
String line = null;
while ((line = br.readLine()) != null) {
String tokens[] = line.split(";");
orderNo = tokens[0];
itemNo = tokens[1];
itemName = tokens[2];
itemQty = tokens[3];
itemPrice = tokens[4];
status = tokens[5];
System.out.println("Order No: [" + orderNo + "]" + " Item No: [" + itemNo + "]" + " Back Order No: [" + itemQty + "]\n");
}
System.out.print("Print Back Order List to file: ");
String choice = input.next();
if (choice.equalsIgnoreCase("y")) {
while ((line = br.readLine()) != null) {
String tokens[] = line.split(";");
orderNo = tokens[0];
itemNo = tokens[1];
itemName = tokens[2];
itemQty = tokens[3];
itemPrice = tokens[4];
status = tokens[5];
bw.write("Order No: [" + orderNo + "]" + " Item No: [" + itemNo + "]" + " Back Order No: [" + itemQty + "]");
bw.newLine();
bw.flush();
bw.close();
}
System.out.println("Successful add to file!");
} else if (choice.equalsIgnoreCase("n")) {
System.out.println("Error");
}
} catch (Exception e) {
System.out.println("Error");
}
}
是否有任何错误,因为我似乎找不到问题或者每次运行时都覆盖它?或者我应该更改变量名称吗?
答案 0 :(得分:2)
您两次使用BufferedReader br
输入。
第一次成功将整个输入文件打印到屏幕上。
但是第二次(当你尝试写的时候)你的代码再也无法读取它,因为你已经到了文件的末尾。
您应该关闭并重新打开它,我强烈建议您查看Java try-with-resource statement。
除了这个问题之外,我还建议仅在用户回答"是"时创建BufferedWriter bw
。问题(因为如果你的用户回答"没有"你只是创建一个无用的空文件)。