Java 无法从Android中的sd卡读取文件
我正在尝试使用以下代码从SD卡读取文件Java 无法从Android中的sd卡读取文件,java,android,file,file-handling,Java,Android,File,File Handling,我正在尝试使用以下代码从SD卡读取文件 f = new RandomAccessFile("/storage/sdcard0/trac.txt", "r"); 但应用程序在执行此操作时崩溃。我能够在SD卡中创建和写入文件,但无法读取。 我在清单中拥有以下权限,并且我正在将其作为系统应用程序运行: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-
f = new RandomAccessFile("/storage/sdcard0/trac.txt", "r");
但应用程序在执行此操作时崩溃。我能够在SD卡中创建和写入文件,但无法读取。
我在清单中拥有以下权限,并且我正在将其作为系统应用程序运行:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE"/>
<uses-permission android:name="android.permission.READ_MEDIA_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_SUPERUSER"></uses-permission>
<uses-permission android:name="android.permission.INJECT_EVENTS"></uses-permission>
尝试通过以下操作获取sd卡路径:
String yourpath = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/folderName/";
这对我很有帮助。
更详细地说:
发布崩溃日志。你确定路径正确吗?我正在努力记住确切的细节,但我相信,如果您在与系统共享的用户ID下运行,您将被禁止使用外部存储,因为旧的原因与卸载时被终止的进程有关-因此您可以在普通应用程序中测试此代码,看看它是否在那里工作。更一般地说,您应该在运行时确定存储路径,而不是猜测它。这将有助于显示您似乎在暗示工作的编写代码,以及已请求的实际崩溃日志。抛出您从某处剪切和粘贴的随机对比示例(无论是在线源代码还是您自己的工作)对于解决海报的特定问题没有多大帮助。这将返回/storage/simulated/0 not/sdcard
try {
File myFile = new File("/sdcard/mysdfile.txt");
FileInputStream fIn = new FileInputStream(myFile);
BufferedReader myReader = new BufferedReader(
new InputStreamReader(fIn));
String fileStr= "";
String aBuffer = "";
while ((fileStr= myReader.readLine()) != null) {
aBuffer += fileStr+ "\n";
}
txtData.setText(aBuffer);
myReader.close();
Toast.makeText(getBaseContext(),
"Done reading SD 'mysdfile.txt'",
Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(getBaseContext(), e.getMessage(),
Toast.LENGTH_SHORT).show();
}