无法读取任何文本文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法读取任何文本文件相关的知识,希望对你有一定的参考价值。
首先,我想请你说我在这里很新,我也是android Studio和Java的初学者。
我的问题/疑问是: 我在Android Studio中有一个应用程序,它应该将字符串写入特定点的文本文件,并且应该在App启动时读取相同的文件。
写入文件正在工作,但没有阅读。当我手动创建文本文件并手动将其插入文件夹时,它会读取字符串。
我已经添加了权限并尝试使用LogCat
查找我的错误,但我现在还没有任何线索可能出错。
变量:
File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File(root.getAbsolutePath() + "/myApp");
我的阅读功能:
String myData = "";
try {
FileReader fileIn = new FileReader(dir + "/data.txt");
Scanner input = new Scanner(fileIn);
while (input.hasNextLine()) {
String line = input.nextLine();
myData = myData + line;
}
input.close();
} catch (Exception ex) {
ex.printStackTrace();
}
我的写作功能:
try {
File file = new File(dir, "data.txt");
FileOutputStream f = new FileOutputStream(file);
PrintWriter pw = new PrintWriter(f);
pw.println("answer42");
pw.flush();
pw.close();
f.close();
} catch (Exception ex) {
ex.printStackTrace();
}
答案
请求是否需要许可?
尝试在AndroidManifest.xml
文件中添加此行
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
还要在MainActivity
中添加此代码,以请求Android API 23+的许可
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
1);
要获得结果,请使用以下代码
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case 1: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the
// contacts-related task you need to do.
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
Toast.makeText(MainActivity.this, "Permission denied to read your External storage", Toast.LENGTH_SHORT).show();
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
更多信息:https://developer.android.com/training/permissions/requesting.html
以上是关于无法读取任何文本文件的主要内容,如果未能解决你的问题,请参考以下文章