尝试创建文件时的FileNotFound异常(Android)

时间:2014-08-05 09:21:01

标签: android file

我有这段代码,只是想创建一个新文件:

// Write to file in thread
    new Thread (new Runnable() {
        public void run() {

            // Write game data to a file
            String partStr = gameName.replace(" ", "_");
            String fileName = partStr + "_game.txt";

            FileOutputStream gamFile = openFileOutput(fileName, Context.MODE_PRIVATE);


            gamFile.write(totItemsStr.getBytes());

        }
    }).start();     // end of thread

...但是我在openFileOutput命令上遇到编译错误,说'未处理的异常类型FileNotFoundException'。

如果我在其周围设置了一个try块以捕获该异常,则错误将转移到write命令,并说“gamFile'无法解决。

我试图在线程中执行此操作的问题是什么?或者它是文件名字符串错误 - 它应该是某个对象吗?

感激地收到任何想法。

注意: 我试过了一个TRY块。 2.编译时出现此错误,在代码运行之前(我无法运行它,因为此编译错误阻止了构建)。

3 个答案:

答案 0 :(得分:0)

请尝试捕获:

中的 FileNotFoundException
catch (FileNotFoundException e) {
    System.out.println("File not found");
}

并检查控制台是否找不到文件。 如果是这样,文件名不正确,那么您可能获得的唯一其他例外是​​I / O,但这不是问题。

答案 1 :(得分:0)

对于函数openFileOutput,由于多种原因抛出FileNotFoundException

  • 如果创建文件的目录不存在
  • 如果由于某些权限问题而无法创建文件

documentation中,它还声明文件名不能包含路径分隔符,因此请检查您的路径名是否符合此要求。

修改

try {
    FileOutputStream gamFile = openFileOutput(fileName, Context.MODE_PRIVATE);
    gamFile.write(totItemsStr.getBytes());
}
catch(Exception e) {
    // Log your error
}

答案 2 :(得分:0)

将代码包装在try-catch块中,如下所示..,

new Thread (new Runnable() {
    public void run() {
        try{
            // Write game data to a file
            String partStr = gameName.replace(" ", "_");
            String fileName = partStr + "_game.txt";

            FileOutputStream gamFile = openFileOutput(fileName, Context.MODE_PRIVATE);
            gamFile.write(totItemsStr.getBytes());

        }catch (Exception e){
            // exception found -> do something
            e.printStacktrace();
        }

    }
}).start();     // end of thread

它应该修复你未处理的FileNotFoundException和' gamFile'无法解决问题