我试图下载一个位图文件到我的电脑,但在JPEG格式。这里是我的代码片段。
private void SaveImage(Bitmap finalBitmap) {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/Users/johnathan/Downloads");
if (!myDir.exists()) {
myDir.mkdirs();
}
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-"+ n +".jpeg";
File file = new File (myDir, fname);
if (file.exists ())
file.delete ();
try {
FileOutputStream out = new FileOutputStream(file);
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch (Exception e) {
System.out.println("Didn't work");
e.printStackTrace();
}
}
我不断收到错误No such file or directory(ENOENT):
W/System.err: java.io.FileNotFoundException: /storage/emulated/0/Users/johnathan/Downloads/Image-4209.jpeg: open failed: ENOENT (No such file or directory)
W/System.err: at libcore.io.IoBridge.open(IoBridge.java:575)
W/System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:236)
W/System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:186)
W/System.err: at com.example.testforcamera.MainActivity.SaveImage(MainActivity.java:173)
W/System.err: at com.example.testforcamera.MainActivity.onActivityResult(MainActivity.java:115)
W/System.err: at android.app.Activity.dispatchActivityResult(Activity.java:8659)
W/System.err: at android.app.ActivityThread.deliverResults(ActivityThread.java:5857)
W/System.err: at android.app.ActivityThread.handleSendResult(ActivityThread.java:5903)
W/System.err: at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:54)
W/System.err: at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
W/System.err: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
W/System.err: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2438)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:106)
W/System.err: at android.os.Looper.loopOnce(Looper.java:226)
W/System.err: at android.os.Looper.loop(Looper.java:313)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:8663)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
W/System.err: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
W/System.err: at libcore.io.Linux.open(Native Method)
W/System.err: at libcore.io.ForwardingOs.open(ForwardingOs.java:567)
W/System.err: at libcore.io.BlockGuardOs.open(BlockGuardOs.java:273)
W/System.err: at libcore.io.ForwardingOs.open(ForwardingOs.java:567)
W/System.err: at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:8523)
W/System.err: at libcore.io.IoBridge.open(IoBridge.java:561)
W/System.err: ... 19 more
我一直在互联网上寻找解决方案,但没有任何效果。虽然大多数答案都很过时。这里有没有人可能有一个解决方案?我已经在这一部分工作了几个小时了。
谢谢
1条答案
按热度按时间j9per5c41#
看起来您试图保存到的目录(
Users/jonathan/Download
s)不存在于Environment.getExternalStorageDirectory()
返回的位置,Environment.getExternalStorageDirectory()
返回的是android文件系统的根目录,而不是计算机的根目录。我不知道您是否/如何从您的Android设备访问您的计算机存储,您可以尝试使用USB on the go电缆,以便Android设备充当主机(如果它支持该功能)并将计算机作为外部存储器(尽管windows在没有特殊驱动程序的情况下访问android手机有很多麻烦,所以它不太可能允许外部设备访问它的一个分区)。之后,您需要使用文件管理器应用程序或通过在Android设备上的终端/控制台应用程序中运行“查找”命令,检查计算机的分区(“C”)是否位于手机的文件系统上/位于手机的文件系统上。