try {
if (fStream == null) {
fStream = new FileOutputStream(filename, true);
}
fStream.write(data, 0, bytes);
return;
} catch (IOException ex) {
ex.printStackTrace();
}
W/System.err( 8147): Caused by: java.io.FileNotFoundException: /storage/emulated/0/my_folder/test_file_name.png: open failed: EACCES (Permission denied)
w/System.err( 8147): at libcore.io.IoBridge.open(IoBridge.java:409)
W/System.err( 8147): at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
W/System.err( 8147): at java.io.FileOutputStream.<init>(FileOutputStream.java:128)
W/System.err( 8147): at myapp.save(SourceFile:515)
W/System.err( 8147): ... 8 more
W/System.err( 8147): Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)
W/System.err( 8147): at libcore.io.Posix.open(Native Method)
W/System.err( 8147): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
W/System.err( 8147): at libcore.io.IoBridge.open(IoBridge.java:393)
W/System.err( 8147): ... 11 more
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
更新
结果发现我调用open和close FileOutputStream的频率太高了,这会在某个时候抛出FileNotFoundException。听起来更像是线程问题。
不久前我也遇到过类似的问题。
你的问题可能在两个不同的领域。这可能是您创建要写入的文件的方式,也可能是您的写入方法有缺陷,因为它依赖于电话。
如果您正在将文件写入SD卡上的特定位置,请尝试使用环境变量。它们应该始终指向一个有效的位置。下面是一个写入下载文件夹的示例:
java.io.File xmlFile = new java.io.File(Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
+ "/Filename.xml");
java.io.File xmlFile = new java.io.File((getActivity()
.getApplicationContext().getFileStreamPath("FileName.xml")
.getPath()));
org.apache.commons.io.FileUtils.copyInputStreamToFile(is, file);
问题内容: 我已经加入包括。 当我尝试在Nexus5(Android 6.0)中运行我的应用程序时,它引发了如下异常: 然后我尝试了另一部Android手机(Android 5.1),一切正常。代码如下: Android 6.0在权限方面有区别吗? 问题答案: 在Android 6(Marshmallow)中,即使用户在安装时接受了你的所有权限,他们仍可以稍后决定从你手中夺走其中一些权限。 快速解
在三星T230(Android 4.4.2)上,它适用于以下两种情况 我已经试过很多这样的设备。T230是一个示例 在Hometech平板电脑(Android 5.1.1)上无法运行。 我得到一个错误如下: 打开失败:EACCES(权限被拒绝) 当前AndroidManifest。xml 我尝试了很多不同的方法。。。requestPermissions()和android:maxSdkVersio
并且在清单中权限集是正确的
java.io.FileNotFoundException:/Storage/Emulated/0/WhatsApp/Media/WhatsApp Documents/api.txt:open失败:EACCES(拒绝权限)
在其他设备中没有发生这种情况,我测试的设备:、、