创建新文件时出现奇怪的问题

时间:2014-02-15 15:34:10

标签: java android android-activity

我有以下两种方法,应该读取和写入文件:

/* Write content to a file */
    private void writeToFile(ArrayList<String> list) {
        @SuppressWarnings("unused")
        File file = new File("jokesBody1.bjk");
        FileOutputStream fos;
        if(list != null){
        try {           
                fos = openFileOutput("jokesBody1.bjk",Context.MODE_PRIVATE);
                ObjectOutputStream out = new ObjectOutputStream(fos);
                out.writeObject(list);
                out.close();
        } catch (FileNotFoundException e) {
                e.printStackTrace();
        } catch (IOException e) {
                e.printStackTrace(); 
        }
        }else{
            try {
                fos = openFileOutput("jokesBody1.bjk",Context.MODE_PRIVATE);
                ObjectOutputStream out = new ObjectOutputStream(fos);
                out.writeObject("");
                out.close();
        } catch (FileNotFoundException e) {
                e.printStackTrace();
        } catch (IOException e) {
                e.printStackTrace(); 
        }
        }
    }

    /* Read file's content */
    private ArrayList<String> readFromFile() {
        File file = new File("jokesBody1.bjk");
        ArrayList<String> list = new ArrayList<String>();
        try {
            ObjectInputStream ois = new ObjectInputStream( new FileInputStream( file ) );
            try {
                list = (ArrayList)ois.readObject();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            ois.close();
            } catch (IOException e) {
            Log.e("log activity", "Can not read file: " + e.toString());
        }

        return list;
    }

当我调用上述方法时,我收到此错误:

02-15 10:28:48.165: E/log activity(1743): Can not read file: java.io.FileNotFoundException: /jokesBody1.bjk: open failed: ENOENT (No such file or directory)

好吧,它清楚地说该文件不存在,但是,这个代码不应该创建它:

File file = new File("jokesBody1.bjk");

为什么我收到此错误?我知道我错过了一些小东西 - 可能是创建文件的一段代码(我不确定),但作为初学者,我无法发现问题。

2 个答案:

答案 0 :(得分:2)

File file = new File("jokesBody1.bjk");

只需创建一个指向该路径但不包含实际文件的File对象。

使用

file.createNewFile();

实际创建文件。

答案 1 :(得分:1)

  

好吧,它清楚地说该文件不存在,但是,这个代码不应该创建它:

实际上,没有。它只创建一个File对象,然后java假定该文件存在。