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