Запись/чтение файла на флешку (эмулятор)

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
Контактная информация:

Re: Запись/чтение файла на флешку (эмулятор)

Сообщение 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", созданный предыдущим примером.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Запись/чтение файла на флешку (эмулятор)

Сообщение Mikhail_dev » 01 фев 2012, 19:30

damager82, благодарю. Только в эмуляторе я не могу удалить папку почему-то, в DDMS. пришлось другое имя давать файлу пока что. как можно почистить от ненужных папок проект в эмуляторе?
Изображение

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Запись/чтение файла на флешку (эмулятор)

Сообщение damager82 » 02 фев 2012, 09:58

no-- писал(а):не могу удалить папку почему-то, в DDMS
Да, у меня тоже не удалял. Пришлось программно:

Код: Выделить всё

directory = new File(sdDir, "cache/GPSLog.txt");
directory.delete();
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Ответить