嘿,伙计们,当我试图用android java读取一个文本文件时,我真的很纠结于一个问题。
public String readFromFile(String filename)
{
String content = "";
try
{
File dir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS) + "/MyApplication");
File file = new File(dir, filename);
Scanner scanner = new Scanner(file);
String line = "";
while(scanner.hasNextLine())
{
line = scanner.nextLine();
content += line + "\n";
}
scanner.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return content;
}
我尝试使用扫描仪和缓冲阅读器来提取内容。
public List<String> readFromFile(String filename)
{
List<String> lines = new ArrayList<String>();
FileReader fileReader;
BufferedReader bufferedReader;
try
{
File dir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS) + "MyApplication");
File file = new File(dir, filename);
fileReader = new FileReader(file);
bufferedReader = new BufferedReader(fileReader);
String line = bufferedReader.readLine();
while(line != null)
{
lines.add(line);
bufferedReader.readLine();
}
bufferedReader.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return lines;
}
但它们似乎都不起作用。这些函数只返回零,就好像文件是空的一样。此外,我没有收到错误消息,并且我仔细检查了路径。通常这些函数对我来说工作得很好,但我不能解决这个问题。
感谢您的帮助:)
编辑:如果发现问题。文件的权限或位置都很好,问题只是我把
FileOutputStream fileOutputStream = new FileOutputStream(file)
在我调用readFromFile()方法之前的代码中。我想正因为如此,readFromFile()方法返回文件为空。感谢您的回答!
发布于 2018-06-10 04:06:48
第二种方法不起作用,因为在while循环中,您没有将readLine
方法的结果赋给line
变量。改变这一点
bufferedReader.readLine();
到这个
line = bufferedReader.readLine();
此外,在MyApplication字符串之前的文件路径中缺少/
。
我尝试了第一种方法,它成功地读取了文件。检查文件是否存在,并检查其内容。此外,请在阅读前通过调用检查您的应用程序是否具有权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
Log.e(TAG, "READ_EXTERNAL_STORAGE permission not granted!");
}
发布于 2018-06-10 03:31:59
你有没有给你的应用程序读文件的权限?
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE" / >
https://stackoverflow.com/questions/50777472
复制相似问题