我正在尝试使用
读取.xyz文件File file = new File(Environment.getExternalStorageDirectory(),"file.xyz");
InputStream is = getResources().getAssets().open("file.xyz");
此外,我使用以下代码检查我的访问权限:
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
mExternalStorageAvailable = mExternalStorageWriteable = true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
mExternalStorageAvailable = true;
mExternalStorageWriteable = false;
} else {
mExternalStorageAvailable = mExternalStorageWriteable = false;
}
System.out.println("EXTERNALSTORAGE_AVAILABLE = " + Boolean.toString(mExternalStorageAvailable));
System.out.println("EXTERNALSTORAGE_WRITEABLE = " + Boolean.toString(mExternalStorageWriteable));
我得到两个布尔值FALSE。更奇怪的是,当我使用getPath()时,我得到/ mnt / sdcard。我有一个文件夹mnt但内部没有SD卡。我也使用ls -a来显示隐藏文件夹,但什么都没有。但是,当我使用File dir = new File(Environment.getExternalStorageDirectory()+"/"
然后使用dir.exists()
时,我会得到真的!?但它不起作用,我得到错误消息EACCES(虽然我进入文件夹mnt时看到文件夹sdcard或文件file.xyz ...所以我认为好吧然后让我把它放在我的Linux上的另一个目录中Debian系统(没有sudo权限btw)。所以我做了以下几点:
File file = new File("/folder1/folder2/.../","file.xyz");
但后来我清楚地看到了目录并将文件放入其中但我对dir.exists()
得到了FALSE。错误是ENOENT。
此外我放了权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
进入我的AndroidManifest.xml。
顺便说一句(也许这很重要)何时使用
if (android.os.Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED))
{
System.out.println("STORAGESTATE equal MEDIA_MOUNTED");
} else{
System.out.println("STORAGESTATE NOT equal MEDIA_MOUNTED");
}
我的STORAGESTATE不等于MEDIA_MOUNTED。
感谢您的帮助! 最好, BootTooth