移动/重命名 SD 卡中的文件

发布于 2025-01-01 10:40:48 字数 687 浏览 1 评论 0原文

我正在尝试将文件从一个目录移动到另一个目录(在 SD 卡中)

我有一个文件的 URI 以及我尝试移动它的方式:

Uri selectedImage = imageReturnedIntent.getData(); // this the uri, something like content://media/external/images/media/635

File sdcard = Environment.getExternalStorageDirectory();
File from = new File(sdcard, selectedImage);
File to = new File(sdcard, "myNewDir/mynewfile.jpg");
from.renameTo(to);

但它不起作用,也没有在 Logcat 中给我任何错误。

编辑:

我已将这两种权限添加到我的清单文件中:

   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

I'm trying to move a file from one directory to another (in SD Card)

I have a file's URI and the way I'm trying to move it:

Uri selectedImage = imageReturnedIntent.getData(); // this the uri, something like content://media/external/images/media/635

File sdcard = Environment.getExternalStorageDirectory();
File from = new File(sdcard, selectedImage);
File to = new File(sdcard, "myNewDir/mynewfile.jpg");
from.renameTo(to);

But it doesnt work, neither does it give me any error in Logcat...

Edit:

I have added both permissions to my manifest file:

   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

在你怀里撒娇 2025-01-08 10:40:48
// this the uri, something like content://media/external/images/media/635

然后您要做的就是尝试将其连接到Environment.getExternalStorageDirectory() 上。这是行不通的。 content://media/external/images/media/635 既不是相对文件系统路径,也不是绝对文件系统路径。它是一个 Uri

如果您希望将图像从 Uri 复制到本地文件,请使用 ContentResolver 获取 InputStream 表示的图像上的 InputStream code>Uri,然后使用 Java I/O 将字节从 InputStream 复制到目标文件。

// this the uri, something like content://media/external/images/media/635

What you are then doing is trying to concatenate this onto Environment.getExternalStorageDirectory(). This will not work. content://media/external/images/media/635 is neither a relative filesystem path nor an absolute filesystem path. It is a Uri.

If you wish to copy the image from the Uri to a local file, use a ContentResolver to get an InputStream on the image represented by the Uri, then use Java I/O to copy the bytes from the InputStream to your target file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文