android ENOENT错误-尝试将位图下载到计算机时

i2byvkas  于 2022-11-27  发布在  Android
关注(0)|答案(1)|浏览(104)

我试图下载一个位图文件到我的电脑,但在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

我一直在互联网上寻找解决方案,但没有任何效果。虽然大多数答案都很过时。这里有没有人可能有一个解决方案?我已经在这一部分工作了几个小时了。
谢谢

j9per5c4

j9per5c41#

看起来您试图保存到的目录(Users/jonathan/Download s)不存在于Environment.getExternalStorageDirectory()返回的位置,Environment.getExternalStorageDirectory()返回的是android文件系统的根目录,而不是计算机的根目录。
我不知道您是否/如何从您的Android设备访问您的计算机存储,您可以尝试使用USB on the go电缆,以便Android设备充当主机(如果它支持该功能)并将计算机作为外部存储器(尽管windows在没有特殊驱动程序的情况下访问android手机有很多麻烦,所以它不太可能允许外部设备访问它的一个分区)。之后,您需要使用文件管理器应用程序或通过在Android设备上的终端/控制台应用程序中运行“查找”命令,检查计算机的分区(“C”)是否位于手机的文件系统上/位于手机的文件系统上。

相关问题