2014-02-21 52 views
1

我试图写一个假的csv文件,但我总是得到一个IOException:文件未找到 我的代码似乎是正确的,但我可能错过了什么地方... 异常是对的FileWriter =新的FileWriter线机器人的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/游泳运动员/训练/存在(以前创建)

+0

检查http://stackoverflow.com/questions/11620641/android-error-open-failed-enoent –

回答

2

您需要创建您的目录。鉴于您当前使用的名称为file的本地变量,请致电file.mkdirs()来创建它们。如果这些目录已经存在,这不会引发错误,所以通常在尝试使用目录之前调用mkdirs()。或者,使用exists()来查看它是否存在,如果需要,请致电mkdirs()

+0

感谢您的建议..我100%确定该目录存在,因为我在我的应用程序中检查它在添加'标准'培训文件之前......但在这种情况下,我直接在我的应用程序启动时创建了这个假培训(稍后添加了客户功能请求..),因此在这种情况下该目录不存在!更好地检查7次... – erwin