Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Runtime.exec()复制Android文件不起作用_Java_Android_Local Storage_Android Sdcard - Fatal编程技术网

Java 使用Runtime.exec()复制Android文件不起作用

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

我正在尝试将文件“project.jpg”从/sdcard复制到/sdcard/temp/文件夹,但由于某些原因,无法复制该文件。我正在使用虚拟设备进行测试,并已通过adb外壳传输了文件“project.jpg”。用于复制文件的函数为

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命令时,它会显示所有文件/文件夹。