0

我已经搜索了几天,我发现的只是使用 bufferedReader 从内部存储上的文件中读取。不能使用 InputStream 从内部存储上的文件中读取吗?

private void dailyInput()
{    
    InputStream in;
    in = this.getAsset().open("file.txt");
    Scanner input = new Scanner(new InputStreamReader(in));
    in.close();
}

我现在用input.next() 在我的文件中搜索我需要的数据。一切正常,但我想将新文件保存到内部存储并从中读取,而无需将所有内容更改为 bufferedReader。这是可能的还是我需要硬着头皮改变一切?仅供参考,我不需要写,只需要阅读。

4

2 回答 2

0

写一个文件。

String FILENAME = "file.txt";
String string = "hello world!";

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

读书

void OpenFileDialog(String file) {

    //Read file in Internal Storage
    FileInputStream fis;
    String content = "";
    try {
        fis = openFileInput(file);
        byte[] input = new byte[fis.available()];
        while (fis.read(input) != -1) {
        }
        content += new String(input);
    }
    catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    catch (IOException e) {
        e.printStackTrace();
    }
}

content将包含您的文件数据。

于 2013-05-04T15:39:51.363 回答
0

当您面临从内部存储中的子文件夹读取文件的条件时,您可以尝试以下代码。有时您可能会在尝试传递上下文时遇到openFileInput问题。这是功能。

    public String getDataFromFile(File file){  
     StringBuilder data= new StringBuilder();  
    try {
        BufferedReader br = new BufferedReader(new FileReader(file));
        String singleLine;
        while ((singleLine= br.readLine()) != null) {
            data.append(singleLine);
            data.append('\n');
        }
        br.close();
        return data.toString();
    }
    catch (IOException e) {
        return ""+e;
    }
}
于 2016-06-21T10:44:10.807 回答