我有这段代码,只是想创建一个新文件:
// 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.编译时出现此错误,在代码运行之前(我无法运行它,因为此编译错误阻止了构建)。
答案 0 :(得分:0)
请尝试捕获:
中的 FileNotFoundExceptioncatch (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'无法解决问题