在Android中保存文件:java.io.FileNotFoundException。打开失败:enoint(没有这样的文件或目录)
我还有一个问题。。。我在源代码上搜索了答案,但没有找到好答案在Android中保存文件:java.io.FileNotFoundException。打开失败:enoint(没有这样的文件或目录),java,android,Java,Android,我还有一个问题。。。我在源代码上搜索了答案,但没有找到好答案 java.io.FileNotFoundException: /mounted/EmailClient/side-corner.png: open failed: ENOENT (No such file or directory) at libcore.io.IoBridge.open(IoBridge.java:453) at java.io.FileOutputStream.<init>(FileOutputStre
java.io.FileNotFoundException: /mounted/EmailClient/side-corner.png: open failed: ENOENT (No such file or directory)
at libcore.io.IoBridge.open(IoBridge.java:453)
at java.io.FileOutputStream.<init>(FileOutputStream.
at java.io.FileOutputStream.<init>(FileOutputStream.java:73) etc
使用此代码
File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/EmailClient/");
folder.mkdirs();
File file = new File(folder,filename);
file.createNewFile();
我想你是想把文件保存在“DIRECTORY\u DOWNLOADS”目录下,。因此,您应该遵循以下代码。 下一行给出了目录
path = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOWNLOADS);
如果您想在该路径内创建特定文件夹“Email\u Client”,请写这行
File folder = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOWNLOADS)+"/Email_Client/");
您应该声明权限“写入外部存储”
请参考以下网址:
如果您正在构建目标版本API级别大于27的应用程序,则默认情况下将禁用存储访问。如果要快速启用它,请在
AndroidManifest.xml
文件中添加以下行
<manifest ... >
<application
android:requestLegacyExternalStorage="true" //add this line
... >
...
</application>
</manifest>
...
文件夹和文件已创建,但文件大小为0。mkdirs()和createNewFile()返回false…但根据异常,错误为未找到文件,但字节[]附件=[B@428943b8@PawneshwerGupta file.mkdirs()将创建目录,因此结果将是目录而不是您可以写入的文件。因此FileNotFoundException此解决方案不适用于Android 10(三星设备).您能详细说明需要注意的任何特定更改吗?我尝试了这个。不起作用。我使用MVP模式,不使用上下文。谢谢您,先生。这节省了我的时间。谢谢您Ganesan的宝贵意见
String fileName="myfile.txt";
String input="Hello World";
String path = Environment.getExternalStorageState();
File file=null;
if (Environment.MEDIA_MOUNTED.equals(path)) {
try {
byte[] attachment = input.getBytes();
File folder = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOWNLOADS)+"/Email_Client/");
folder.mkdirs();
file=new File(folder,fileName);
//Automatically creates the new empty file specified by the name, if it is not exist.
file.createNewFile();
Log.i("EmailClient", "saveFile: Dir created");
FileOutputStream out = new FileOutputStream(file);
out.write(attachment);
out.close();
} catch (IOException e) {
Log.e("EmailClient", "saveFile: File not saved", e);;
}
}
<manifest ... >
<application
android:requestLegacyExternalStorage="true" //add this line
... >
...
</application>
</manifest>