SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
-
Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Сообщение
Mikhail_dev » 01 фев 2012, 00:46
Здравствуйте. Есть такая проблема. не могу создать файл на флешке.
Код: Выделить всё
private void writeData(String sData) throws IOException {
File fileName = null;
String sdState = android.os.Environment.getExternalStorageState();
if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) {
File sdDir = android.os.Environment.getExternalStorageDirectory();
fileName = new File(sdDir, "cache/GPSLog.txt");
} else {
fileName = this.getCacheDir();
}
if (!fileName.exists())
fileName.mkdirs();
try {
FileWriter f = new FileWriter(fileName);
f.write(sData);
f.flush();
f.close();
} catch (Exception e) {
Log.d("myLogs", fileName.toString());
}
пример содран отсюда
http://androidengineer.ru/2011/07/rabot ... v-android/
что не так в нём? У меня в эмуляторе создается вместо файла папка с именем текстового файла "GPSLog.txt". И естественно при записи в файл вылетает Exception.
fileName.toString = 01-31 21:38:23.810: D/myLogs(1739): /sdcard/cache/GPSLog.txt
-
damager82
- Администратор
- Сообщения: 1383
- Зарегистрирован: 07 янв 2012, 11:32
-
Контактная информация:
Сообщение
damager82 » 01 фев 2012, 17:33
Странный пример. Метод mkdirs создает каталог, но не файл.
Так будет работать.
Код: Выделить всё
private void writeData(String sData) throws IOException {
File fileName = null;
File directory = null;
String sdState = android.os.Environment.getExternalStorageState();
if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) {
File sdDir = android.os.Environment.getExternalStorageDirectory();
directory = new File(sdDir, "cache");
} else {
directory = this.getCacheDir();
}
if (!directory.exists()) directory.mkdirs();
fileName = new File(directory, "GPSLog.txt");//
try {
FileWriter f = new FileWriter(fileName);
f.write(sData);
f.flush();
f.close();
} catch (Exception e) {
Log.d("myLogs", fileName.toString() + " error = " + e.getMessage());
}
}
Но сначала надо будет удалить с карты каталог "cache/GPSLog.txt", созданный предыдущим примером.
-
Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Сообщение
Mikhail_dev » 01 фев 2012, 19:30
damager82, благодарю. Только в эмуляторе я не могу удалить папку почему-то, в DDMS. пришлось другое имя давать файлу пока что. как можно почистить от ненужных папок проект в эмуляторе?
-
damager82
- Администратор
- Сообщения: 1383
- Зарегистрирован: 07 янв 2012, 11:32
-
Контактная информация:
Сообщение
damager82 » 02 фев 2012, 09:58
no-- писал(а):не могу удалить папку почему-то, в DDMS
Да, у меня тоже не удалял. Пришлось программно:
Код: Выделить всё
directory = new File(sdDir, "cache/GPSLog.txt");
directory.delete();