Записать читаемый файловый мир в память смартфона

Я пытаюсь получить доступ к файлу, который я заполняю благодаря моему приложению. Я храню его в памяти своего телефона, но не во внутренней памяти моего приложения.

Моя проблема в том, что файл не существует, когда я открываю его на своем ПК (с телефоном, подключенным через USB). Но он доступен и не пуст, когда я открываю его прямо со своего смартфона.

Мне нужно, чтобы этот файл был доступен на моем компьютере.

В моем манифесте:

READ_EXTERNAL_STORAGE
WRITE_EXTERNAL_STORAGE

Я пробовал так:

FileWriter outFile = new FileWriter(Environment.getExternalStoragePublicDirectory("my_app/data/file.txt");
PrintWriter out = new PrintWriter(outFile);
out.append("text");
out.flush();
out.close();

А еще вот так:

 File file = Environment.getExternalStoragePublicDirectory("my_app/data/file.txt");
 FileOutputStream outputStream = context.openFileOutput(file, Context.MODE_WORLD_READABLE);
 PrintStream printStream = new PrintStream(outputStream);
 printStream.println(text);
 printStream.close();

По-другому..

File file = Environment.getExternalStoragePublicDirectory("my_app/data/file.txt");
FileWriter outFile = new FileWriter(file);
BufferedWriter buf = new BufferedWriter(outFile);
buf.write("hey");
buf.close();
outFile.close();

Некоторые из этих решений работают, но только на моем телефоне, поэтому их нельзя прочитать во всем мире, другие просто не работают...

В чем разница между OutPutStreamWriter, FileWriter, BufferedWriter, FileOutputStream, PrintWriter, ...? Какой из них я должен выбрать?

Как мне создать общедоступный файл, чтобы получить к нему доступ непосредственно с моего компьютера?

Спасибо за помощь!


person Anne-Claire    schedule 02.09.2013    source источник
comment
Может потому, что он еще где-то открыт?   -  person Sherif elKhatib    schedule 02.09.2013
comment
Нет, это не проблема   -  person Anne-Claire    schedule 02.09.2013


Ответы (1)


Попробуй это:

String toWrite = "save me to disk";
File dir = new File(Environment.getExternalStorageDirectory(), INSTALLATION_DIRECTORY); 
if (!dir.exists()) {
    dir.mkdirs();
}
File file = new File(dir, INSTALLATION_FILE);
FileOutputStream out = new FileOutputStream(file );
out.write(toWrite.getBytes());
out.close();
person Itai Hanski    schedule 02.09.2013
comment
нет все равно не работает. Мой файл создается и текст пишется на моем телефоне, но когда я пытаюсь увидеть этот же файл на своем ПК, папка пуста... - person Anne-Claire; 03.09.2013
comment
Этот метод проверен мной и работает. Так что, возможно, проблема заключается в подключении к ПК. Вы видите файл с помощью оболочки ADB? - person Itai Hanski; 03.09.2013
comment
Да, я вижу файл в Android Debug Monitor, но не вижу его в проводнике. - person Anne-Claire; 03.09.2013
comment
короткий поиск дал эти результаты, попробуйте то, что они предлагают: in-android-file-brows" title="невозможно увидеть файл в проводнике Windows, пока он виден в браузерах файлов Android"> stackoverflow.com/questions/7391432/ stackoverflow.com/questions/7429087/ - person Itai Hanski; 03.09.2013
comment
У меня это работает с этим: context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+"my_path")))); Спасибо за ваше время! - person Anne-Claire; 03.09.2013