使用InputStream从内部存储中读取文件

时间:2013-05-04 15:30:55

标签: android inputstream

我搜索了几天,而我发现只是使用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。这是可能的还是我需要咬紧牙关并改变一切?仅供参考我不需要写,只能阅读。

2 个答案:

答案 0 :(得分: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将包含您的文件数据。

答案 1 :(得分: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;
    }
}