Как мне записать байтовый массив в файл в Android? - PullRequest
7 голосов
/ 26 марта 2012

Это мой код для создания файла.

public void writeToFile(byte[] array) 
{ 
    try 
    { 
        String path = "/data/data/lalallalaa.txt"; 
        FileOutputStream stream = new FileOutputStream(path); 
        stream.write(array); 
    } catch (FileNotFoundException e1) 
    { 
        e1.printStackTrace(); 
    } 
} 

Когда я пытаюсь отправить файл на мой сервер, просто позвонив по пути String path = "/data/data/lalallalaa.txt";

Я получаю эту ошибку logcatсообщение:

03-26 18:59:37.205: W/System.err(325): java.io.FileNotFoundException: /data/data/lalallalaa.txt

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

Ответы [ 4 ]

10 голосов
/ 26 марта 2012

Вы уверены, что файл уже создан?

Попробуйте добавить это:

File file = new File(path);
if (!file.exists()) {
  file.createNewFile();
}
6 голосов
/ 18 февраля 2016

Я думаю, вам лучше добавить функцию закрытия FileOutputStream для очистки кода

Работает у меня отлично

try {
    if (!File.exists()) {
        File.createNewFile();
    }
    FileOutputStream fos = new FileOutputStream(File);
    fos.write(bytes);
    fos.close();
} catch (Exception e) {
    Log.e(TAG, e.getMessage());
}
5 голосов
/ 26 марта 2012

/ data / data / является привилегированным каталогом в Android. Приложения не могут писать в этот каталог или читать из него.

Вместо этого вы должны использовать context.getFilesDir(), чтобы найти правильное имя файла для использования.

0 голосов
/ 26 марта 2012

Это исключение выдается, если файл не существует или вы пытаетесь записать в файл только для чтения.Также попробуйте использовать полное имя пути и посмотрите, возникает ли то же исключение (чтобы проверить, правильно ли вы указали относительный путь).

...