无法打印到文本文件

时间:2017-06-15 13:39:18

标签: java io

输入文件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");
    }

}

是否有任何错误,因为我似乎找不到问题或者每次运行时都覆盖它?或者我应该更改变量名称吗?

1 个答案:

答案 0 :(得分:2)

您两次使用BufferedReader br输入。

第一次成功将整个输入文件打印到屏幕上。

但是第二次(当你尝试写的时候)你的代码再也无法读取它,因为你已经到了文件的末尾。

您应该关闭并重新打开它,我强烈建议您查看Java try-with-resource statement

除了这个问题之外,我还建议仅在用户回答"是"时创建BufferedWriter bw。问题(因为如果你的用户回答"没有"你只是创建一个无用的空文件)。