从ArrayList打印对象,找不到文件

时间:2017-06-19 20:27:10

标签: java arraylist

我想创建一个程序,在TextField中读取用户输入并将其放入保存到文件中的ArrayList。然后,按钮将允许用户通过输入他们正在寻找的动物的名称从ArrayList删除对象(包含从中导入动物的名称,ID和国家/地区)。这是按下删除按钮时调用的方法的代码。我得到FileNotFoundException,我不明白为什么。你能帮帮我吗?

    public void DeleteLine(String fileName,String strSearched){
            try {

                ObjectInputStream os = new ObjectInputStream(new FileInputStream(fileName));
                ObjectInputStream osTMP = new ObjectInputStream(new FileInputStream("ZooTMP.txt"));
                animal = (ArrayList<ANIMAL>) os.readObject();

                 System.out.println("Original contents of animal: ");
                  Iterator itr = animal.iterator();

                  while(itr.hasNext()) {
                     Object ANIMAL = itr.next();
                     if (ANIMAL.contains(strSearched) ) {

                         itr.remove();
                          }


                  }
                  System.out.println();

                    os.close();
                    osTMP.close();

            } catch (FileNotFoundException ex) {
                System.out.println("Can't find the file Zoo.txt");
            } catch (IOException ex) {
                System.out.println("The file Zoo.txt has already been closed");
            } catch (ClassNotFoundException ex) {
                System.out.printf("Class is missing: %s\n",ex);
            }

        } 

这是ANIMAL界面:

package GUI_Try;

import java.io.*;

class ANIMAL implements Serializable {
    String name, ID, country;

    public ANIMAL(String name, String ID, String country){
        this.name = name;
        this.ID = ID;
        this.country = country;
    }
}

1 个答案:

答案 0 :(得分:0)

首先,您确认该文件是在项目所在的同一目录中创建的吗?任何子目录都必须包含在文件名中。

其次,(可能不相关)但您似乎不会在代码中的任何位置使用osTMP,除了打开和关闭流。也许这是导致FileNotFoundException的文件?有关项目文件中文件体系结构的一些信息会很有帮助。您可以一次注释掉一行或另一行,并找出导致此异常的文件,这也有助于解决问题。