是否可以从内部存储(Android)读取文件?

时间:2012-06-02 06:33:53

标签: android android-intent

我想在内部存储中保存文件。下一步是我要读取文件。 使用FileOutputStream在内部存储中创建文件,但读取文件时出现问题。

是否可以访问内部存储空间来读取文件?

4 个答案:

答案 0 :(得分:7)

是的,您可以从内部存储中读取文件。

写文件你可以用这个

String FILENAME = "hello_file";
String string = "hello world!";

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();

阅读文件使用以下内容:

从内部存储中读取文件:

调用openFileInput()并将其传递给要阅读的文件名。这将返回FileInputStream。使用read()从文件中读取字节。然后使用close()关闭该流。

<强>代码:

StringBuilder sb = new StringBuilder();
try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line).append("\n");
        }
        is.close();
    } catch(OutOfMemoryError om) {
        om.printStackTrace();
    } catch(Exception ex) {
        ex.printStackTrace();
    }
    String result = sb.toString();

请参阅此link

答案 1 :(得分:6)

可以从内部存储器写入和读取文本文件。在内部存储的情况下,不需要直接创建文件。使用FileOutputStream写入文件。 FileOutputStream将自动在内部存储中创建文件。无需提供任何路径,您只需提供文件名即可。现在阅读文件使用FileInputStream。它将自动从内部存储中读取文件。下面我提供了读写文件的代码。

编写文件的代码

String FILENAME ="textFile.txt";
String strMsgToSave = "VIVEKANAND";
FileOutputStream fos;
try
{
    fos = context.openFileOutput( FILENAME, Context.MODE_PRIVATE );
    try
    {
        fos.write( strMsgToSave.getBytes() );
        fos.close();

    }
    catch (IOException e)
    {
        e.printStackTrace();
    }

}
catch (FileNotFoundException e)
{
    e.printStackTrace();
}

}

阅读文件的代码

int ch;
StringBuffer fileContent = new StringBuffer("");
FileInputStream fis;
try {
    fis = context.openFileInput( FILENAME );
    try {
        while( (ch = fis.read()) != -1)
            fileContent.append((char)ch);
    } catch (IOException e) {
        e.printStackTrace();
    }
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

String data = new String(fileContent);

答案 2 :(得分:1)

这个主题似乎正是您正在寻找的Read/write file to internal private storage

有一些好的提示。

答案 3 :(得分:0)

绝对是的,

阅读此http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

String FILENAME = "hello_file";
String string = "hello world!";

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());

fos.close();