2014-02-21 3 views
1

Я пытаюсь написать фальшивый файл csv, но всегда получаю IOException: файл не найден мой код кажется правильным, но я, возможно, что-то пропустил ... исключение возбуждается на FileWriter = новый FileWriter линииandroid 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

Смежные вопросы