获取内部文件路径

时间:2011-12-10 23:44:38

标签: android file path internal

我打开一个内部文件并写信给他:

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();
    }
}

第一次运行它没关系 - 我得到:“文件不存在现在创建他”到Log 在第二次我得到FATAL ERROR由空指针引起。 我认为这是因为osw得到了无效

osw  = new OutputStreamWriter(fOut);

但我怎样才能阻止它?

1 个答案:

答案 0 :(得分:0)

上面的代码是错误的,我只需要重写它:

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,如果该文件存在,它将附加。自由复制粘贴