Java 使用Runtime.exec()复制Android文件不起作用
我正在尝试将文件“project.jpg”从/sdcard复制到/sdcard/temp/文件夹,但由于某些原因,无法复制该文件。我正在使用虚拟设备进行测试,并已通过adb外壳传输了文件“project.jpg”。用于复制文件的函数为Java 使用Runtime.exec()复制Android文件不起作用,java,android,local-storage,android-sdcard,Java,Android,Local Storage,Android Sdcard,我正在尝试将文件“project.jpg”从/sdcard复制到/sdcard/temp/文件夹,但由于某些原因,无法复制该文件。我正在使用虚拟设备进行测试,并已通过adb外壳传输了文件“project.jpg”。用于复制文件的函数为 public void $copyFile() { try { cpSrc = escapePath(this.cpSrc); cpDest = escapePath(this.cpDest); Lo
public void $copyFile()
{
try
{
cpSrc = escapePath(this.cpSrc);
cpDest = escapePath(this.cpDest);
Log.d("$copyFile()","cpSrc = "+cpSrc);
Log.d("$copyFile()","cpDest = "+cpDest);
String destination = getFilename(cpDest,extractFilename(cpSrc));
Runtime.getRuntime().exec("dd in="+cpSrc+" of="+destination);
Log.d("$copyFile()","executed command : 'dd in="+cpSrc+" of="+destination+"'");
displayToast("File Copied Sucessfully.");
clearAllModes();
return;
}
catch(Exception e)
{
displayToast("$copyFile Error : "+e);
this.clearCopyBuffer();
clearAllModes();
}
}
其中,escapePath用于对给定路径中的任何空格字符进行转义。我得到了如下调试日志:
cpSrc = /sdcard/project.jpg
cpDest = /sdcard/temp
executed command : 'dd in=/sdcard/project.jpg of=/sdcard/temp/project.jpg
有人能指出代码中的错误吗,
顺便说一句,关于处理文件/文件夹的其他方法的建议?这将有助于我尝试使用文件管理器。您是否在清单文件中添加了正确的用户权限?而且我已经添加了“写入”外部存储权限,但没有添加“读取”外部存储权限,我将尝试在短时间内添加“读取”权限和“报告”。@Pierre:尝试添加“读取”外部存储权限,仍然无法复制文件。@cyberPheonix如果您的应用程序持有“写入”外部存储权限,文档中说,读取外部存储将自动授予。但是您确定文件夹/sdcard/temp/存在吗?否则dd无法为打开文件writing@MalteSchmitz:是的,我确定,因为我使用adb shell创建了它们,当我运行ls命令时,它会显示所有文件/文件夹。