【问题标题】:android FileWriter cannot open file ( file not found)android FileWriter 无法打开文件(找不到文件)
【发布时间】:2014-02-21 00:19:27
【问题描述】:

我正在尝试编写一个假的 csv 文件,但我总是得到一个 IOException : file not found 我的代码似乎是正确的,但我可能在某处遗漏了一些东西...... 在 filewriter = new FileWriter 行上引发异常

java.io.File file;
file = new File(context.getExternalFilesDir(null), "/swimmer/trainings/");
String mTrainingsPath = file.getPath();

String csvFilePath = mTrainingsPath + java.io.File.separator + training.filename;    
file = new File( csvFilePath);

 try {
 FileWriter fileWriter = new FileWriter( file );
 PrintWriter csvOut = new PrintWriter( fileWriter );

String data = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.\\n" 
+ " Cras facilisis elit eu nisl laoreet mollis.\\n" 
+ " In feugiat nec elit at tincidunt.";

csvOut.println( data );
csvOut.close();

} catch( IOException e ) {
Log.e(TAG, "IOException in creating csv file");
Log.e(TAG, "STACKTRACE");
Log.e(TAG, Log.getStackTraceString(e));
 }

这里是日志文件:

java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.swimtechtest.swimmer/files/swimmer/trainings/myFirstTraining.csv: open failed: ENOENT (No such file or directory)
at libcore.io.IoBridge.open(IoBridge.java:409)
at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
at java.io.FileOutputStream.<init>(FileOutputStream.java:73)
at java.io.FileWriter.<init>(FileWriter.java:42)
at ...swimmer.database.DatabaseHandler.putFakeTraining(DatabaseHandler.java:86

目录 /storage/emulated/0/Android/data/com.swimtechtest.swimmer/files/swimmer/trainings/ 存在(之前创建)

【问题讨论】:

标签: android java-io


【解决方案1】:

您需要创建目录。给定您当前名为file 的局部变量,调用file.mkdirs() 来创建它们。如果目录已经存在,这不会引发错误,因此通常您只需在尝试使用目录之前调用mkdirs()。或者,使用exists() 来查看它是否存在,然后在需要时调用mkdirs()

【讨论】:

  • 感谢您的建议.. 我 100% 确定该目录存在,因为我在添加“标准”培训文件之前在我的应用程序中检查了它....但在这种情况下,我创建了这个当我的应用程序启动时直接进行虚假培训(稍后添加客户功能请求..)所以在这种情况下..目录不存在!最好检查 7 次 ...
猜你喜欢
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
相关资源
最近更新 更多