Получить внутренний путь к файлу - PullRequest
0 голосов
/ 11 декабря 2011

Я открываю внутренний файл и пишу ему так:

final String NEWLINE = new String(newLine+"\n");     
FileOutputStream fOut = openFileOutput(fileName+".txt",MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(fOut); 
osw.write(NEWLINE);

Мне нужен способ проверить, существует ли внутренний файл (fileName + ". Txt").

Если нет, запишите newLine в файл, иначе добавьте newLine в файл.

Я пытался:

File file = getBaseContext().getFileStreamPath(fileName+".txt");
if(file.exists())...

Но я не знаю внутренний путь к файлу, и он не работает.

Есть предложения?

Подробнее:

private void writeStringToFile(String fileName, String newLine) {
    final String NEWLINE = new String(newLine + "\n");
    FileOutputStream fOut = null;
    OutputStreamWriter osw = null;
    try { // catches IOException below
        File file = getFileStreamPath(fileName + ".txt");
        if (!file.exists()) {
            Log.d("DAVID", "File not exist now create him");
            fOut = openFileOutput(fileName + ".txt", MODE_WORLD_READABLE);
            osw = new OutputStreamWriter(fOut);
        } else {
            Log.d("DAVID", "File already exist");
            osw = new OutputStreamWriter(fOut);
        }
        // Write the string to the file
        osw.append(NEWLINE);
        // osw.write(NEWLINE);
        // ensure that everything is really written out and close
        osw.flush();
        osw.close();
    } catch (IOException ioe) {
        ioe.printStackTrace();
    }
}

В первый раз, когда он работает, все в порядке - я получаю: "Файл не существует, теперь создайте его", чтобы войти Во второй раз я получаю причину FATAL ERROR по нулевому указателю. Я думаю, что это потому, что OSS получить нулевой FOut

osw  = new OutputStreamWriter(fOut);

Но как я могу предотвратить это?

1 Ответ

0 голосов
/ 06 мая 2013

Код выше был настолько неправильным, что мне просто пришлось переписать его:

private void apendStringToInternalFile(String fileName, String newLine)
        throws FileNotFoundException, UnsupportedEncodingException,
        IOException {
    newLine = new String(newLine + "\n");
    FileOutputStream fOut = openFileOutput(fileName + ".txt",
            Context.MODE_APPEND | Context.MODE_WORLD_READABLE);
    // MODE_WORLD_READABLE is _deprecated_
    try {
        // ALWAYS SPECIFY ENCODING -
        OutputStreamWriter osw = new OutputStreamWriter(fOut, "UTF-8");
        BufferedWriter buffer = new BufferedWriter(osw);
        buffer.write(newLine);
        buffer.flush();
    } finally {
        try {
            fOut.close();
        } catch (IOException e) {
            // Log this to be on the safe side -
            e.printStackTrace();
        }
    }
}

Очевидно, что вся проблема не существует. openFileOutput создаст файл, если он не существует, и добавив флаг Context.MODE_APPEND, он добавится, если файл существует. Скопируйте и вставьте свободно

...