Java文件处理编辑记录



我为系统制作了一个代码,该代码会更新文本文件数据库中的记录,但我似乎无法使其正常工作。代码没有任何错误。它只是不做我打算做的事情

public static void Update() throws Exception {
    File tempfile2 = new File("temp.txt");
    tempfile2.createNewFile();
    FileInputStream tempFStream = new FileInputStream(tempfile2);
    BufferedReader read = new BufferedReader(new InputStreamReader(tempFStream));
    System.out.print("Product Number: ");
    String searchnum = br.readLine();
    try {
        LoadFile();
        boolean found = false;
        for (int i = 0; i < row; i++) {
            String record[] = list.get(i).split(",");
            if (!searchnum.equals(record[0])) {
                found = true;
                FileWriter fw = new FileWriter(tempfile2, true);
                fw.write(record[0] + "," + record[1] + "," + record[2] + "," + record[3] + "," + record[4] + "," + record[5] + "rn");
                fw.close();
            }
        }
        for (int i = 0; i < row; i++) {
            String record[] = list.get(i).split(",");
            if (searchnum.equals(record[0])) {
                found = true;
                System.out.println("ttt*******************************");
                System.out.println("ttt       PIXBOX PHOTOBOOTH");
                System.out.println("ttt*******************************");
                System.out.println("ntttRecord Found:");
                System.out.println("ntttProduct Number  : " + record[0]);
                System.out.println("tttCategory      : " + record[1]);
                System.out.println("tttProduct Name  : " + record[2]);
                System.out.println("tttPrice [m/d/y] : " + record[3]);
                System.out.println("tttQuantity      : " + record[4]);
                System.out.println("nnttt--------------------------------");
                System.out.print("tttAre you sure you want to replace the records?<Y/N>: ");
                String del = br.readLine();
                if (del.equals("Y") || del.equals("y")) {
                    LoadFile();
                    System.out.println("ttt*******************************");
                    System.out.println("ttt       PIXBOX PHOTOBOOTH");
                    System.out.println("ttt*******************************");
                    System.out.println("nnttt------Update Record Form------");
                    System.out.print("nntttProduct Number      : ");
                    int prodnum = Integer.parseInt(br.readLine());
                    System.out.print("tttCategory        : ");
                    String cat = br.readLine();
                    System.out.print("tttProduct Name        :");
                    String prodname = br.readLine();
                    System.out.print("tttPrice: ");
                    String price = br.readLine();
                    System.out.print("tttQuantity    : ");
                    String quan = br.readLine();
                    read.close();
                    database.delete();
                    boolean rename = false;
                    if (rename = tempfile2.renameTo(database)) {
                        InsertRecords(prodnum, cat, prodname, price, quan);
                        System.out.println("tttSuccessfully Edited!");
                        exiting();
                    } else {
                        System.out.print("Edit Failed!");
                    }
                } else if (del.equals("N") || del.equals("n")) {
                    MainMenu();
                }
            }
            if (!searchnum.equals(record[1])) {
                System.out.println("ntttNo Record Found.");
                Thread.sleep(2000);
                exiting();
            }
        }
    } catch (Exception e) {
        System.out.print("File Empty!");
    }
}
public static void LoadFile()throws Exception
{
    list.clear();
    FileInputStream fis = new FileInputStream(database);
    BufferedReader read = new BufferedReader(new InputStreamReader(fis));
    row = 0; 
    while(read.ready())
    {
        list.add(read.readLine());
        row++;
    }   
    read.close();
}

每次我运行此功能...它都可以正常工作,直到产品编号:用户输入,在输入一个数字后,它将直接显示文件为空,该文件已在程序的末尾。它好像忽略了尝试/捕获。我肯定做错了什么,但我不知道我做错了什么。有人给我亮了一些光吗?谢谢

和e.printstacktrace();这是输入产品编号后显示的内容...

java.lang.ArrayIndexOutofBoundException:5
  at SnackTimeInventorySystem.Update<SnackTimeInventorySystem.java:525>
  at SnackTimeInventorySystem.MainMenu<SnackTimeInventorySystem.java:66>
  at SnackTimeInventorySystem.Login<SnackTimeInventorySystem.java:369>
  at SnackTimeInventorySystem.main<SnackTimeInventorySystem.java:14>

事实证明,我的数组上只有5个条目,但声明了6个条目

System.out.println("ttt*******************************");
            System.out.println("ttt       PIXBOX PHOTOBOOTH");
            System.out.println("ttt*******************************");
            System.out.println("ntttRecord Found:");
            System.out.println("ntttProduct Number  : " + record[0]);
            System.out.println("tttCategory      : " + record[1]);
            System.out.println("tttProduct Name  : " + record[2]);
            System.out.println("tttPrice [m/d/y] : " + record[3]);
            System.out.println("tttQuantity      : " + record[4]);
            System.out.println("nnttt--------------------------------");
fw.write(record[0] + "," + record[1] + "," + record[2] + "," + record[3] + "," + record[4] + "," + record[5] + "rn");

所以我只需要删除 record[5]并解决了问题

最新更新