从内部存储Android读取文件

时间:2015-10-15 11:59:52

标签: java android filereader

我不知道为什么我无法从内部存储中读取文件

代码出错:

public String readFile()
{
    try
    {
        String filePath = MainActivity.this.getFilesDir() + "/"+"Contacts"+"/" + "Contacts";
        File file = new File( filePath );
        FileReader reader = new FileReader(file);
        reader.read(jsonString);
    } catch(IOException e) {
        e.printStackTrace();
        String importError = e.getMessage();
    }
    return jsonString;
}

错误位于reader read (jsonString),即can not resolve method read(java.lang.String)

3 个答案:

答案 0 :(得分:1)

<强>问题:
错误告诉你出了什么问题:

  

无法解析方法read(java.lang.String)

<强>原因:

FileReader继承了Reader中的read方法,您可以找到Reader中的,例如Reader.read(CharBuffer)Reader.read(char[]),但不是{{ 1}}

Reader.read(String)
  

尝试将字符读入指定的字符缓冲区。缓冲区按原样用作字符存储库:唯一的更改是put操作的结果。不执行缓冲器的翻转或倒带。

<强>解:
要解决您的问题,只需将public int read(char[] cbuf) throws IOException 转换为jsonStringCharBuffer,例如:

char[]

添加-ON&#39; S:

可用的char cbuf[] = jsonString.toCharArray(); reader.read(cbuf); 方法:

Read.read()

答案 1 :(得分:0)

如果您想从资产中读取,这是我上一个应用程序的代码的一部分 文件位置:/ assets

    try {
        InputStream input = context.getAssets().open(file_name);
        byte[] buffer = new byte[input.available()];
        input.read(buffer);
        input.close();
        data_file = new String(buffer);

    } catch (IOException e) {
        Log.e("File err", "-----" + e.getMessage().toString());
    }

答案 2 :(得分:-2)

修改 为什么你得到错误是因为你没有声明jsonString(它需要是一个charbuffer)

public String readFile()
{
    //Create Charbuffer to save file in
    CharBuffer buffer = null;

    try
    {
        String filePath = MainActivity.this.getFilesDir() + "/"+"Contacts"+"/" + "Contacts";

        File file = new File(filePath);

        FileReader reader = new FileReader(file);

        reader.read(buffer);
        return buffer.toString();
    }
    catch(IOException e) {
        e.printStackTrace();
        String importError = e.getMessage();
        return null;
    }
}