Android:将文件从一个目录复制到另一个目录

Android:将文件从一个目录复制到另一个目录,android,file,directory,copy,Android,File,Directory,Copy,我正在使用以下代码并使用ApacheCommons库将一个文件(临时音频文件)从源文件夹复制到目标文件夹TT_1A 代码: Apache Commons: 问题: 我使用了FileUtils功能来复制临时文件并粘贴到desc文件夹中,作为TT_1A。然而,logcat报告错误,并提供以下详细信息: 10-17 00:41:04.260: E/AndroidRuntime(27450): FATAL EXCEPTION: main 10-17 00:41:04.260: E/AndroidRun

我正在使用以下代码并使用ApacheCommons库将一个文件(临时音频文件)从源文件夹复制到目标文件夹TT_1A

代码: Apache Commons:

问题: 我使用了
FileUtils
功能来复制临时文件并粘贴到desc文件夹中,作为TT_1A。然而,logcat报告错误,并提供以下详细信息:

10-17 00:41:04.260: E/AndroidRuntime(27450): FATAL EXCEPTION: main
10-17 00:41:04.260: E/AndroidRuntime(27450): java.lang.NoClassDefFoundError: org.apache.commons.io.FileUtils
10-17 00:41:04.260: E/AndroidRuntime(27450):    at com.abc.abc.TT_details_canton$14.onClick(TT_details_canton.java:575)
10-17 00:41:04.260: E/AndroidRuntime(27450):    at android.view.View.performClick(View.java:4223)
10-17 00:41:04.260: E/AndroidRuntime(27450):    at android.view.View$PerformClick.run(View.java:17275)
10-17 00:41:04.260: E/AndroidRuntime(27450):    at android.os.Handler.handleCallback(Handler.java:615)
10-17 00:41:04.260: E/AndroidRuntime(27450):    at android.os.Handler.dispatchMessage(Handler.java:92)
10-17 00:41:04.260: E/AndroidRuntime(27450):    at android.os.Looper.loop(Looper.java:137)
10-17 00:41:04.260: E/AndroidRuntime(27450):    at android.app.ActivityThread.main(ActivityThread.java:4898)
10-17 00:41:04.260: E/AndroidRuntime(27450):    at java.lang.reflect.Method.invokeNative(Native Method)
10-17 00:41:04.260: E/AndroidRuntime(27450):    at java.lang.reflect.Method.invoke(Method.java:511)
10-17 00:41:04.260: E/AndroidRuntime(27450):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
10-17 00:41:04.260: E/AndroidRuntime(27450):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
10-17 00:41:04.260: E/AndroidRuntime(27450):    at dalvik.system.NativeStart.main(Native Method)

我整晚都被这件事搞得晕头转向。有没有复制文件的方法???

按以下方式修改后,它运行良好:

    button1_save.setOnClickListener(new OnClickListener() 
    {
        public void onClick(View v) 
        {
            String sourcePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/TongueTwister/tt_temp.3gp";
            File source = new File(sourcePath);

            String destinationPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/TongueTwister/tt_1A.3gp";
            File destination = new File(destinationPath);
            try 
            {
                FileUtils.copyFile(source, destination);
            } 
            catch (IOException e) 
            {
                e.printStackTrace();
            }
        }
    }); 

在API级别29中,android添加了FileUtils类,该类具有复制功能

使用以下代码复制您的文件:-

public void copyFile(File source, File destination) throws IOException {
    FileUtils.copy(new FileInputStream(source), new FileOutputStream(destination));
}
如果Android Studio没有找到FileUtils类,这意味着您的CompileSDK版本低于29,在这种情况下,您必须升级CompileSDK版本

要升级,请转到应用程序级别的build.gradle文件,并将旧的compileSdkVersion替换为29

像这样

compileSdkVersion 29
有关FileUtils类的更多信息,请访问Android开发者网站

使用srcFile.copyTo(destinationFile)

您在类路径中将commons jar标记为“导出”了吗?似乎它没有被排除在apk中。对不起,我发现了一个可怕的错误,在将代码修改为FileUtils.copyFile(source,desc)之后;它现在按预期的那样执行。还是非常感谢你的帮助!FileUtils在哪里@pearmak@APOORVADOSHI是ApacheCommons io包。要使用它,你必须将commons-io.jar添加到你的项目中。FileUtils像一个符咒一样解决了这个问题,它还复制了整个目录只要通过目标目录和源目录,它就会将整个目录复制到新的directorycommons io android gradle Dependency compile'commons io:commons io:2.4'FileUtils.copyFile()中函数在DCIM文件夹中制作一个额外的文件副本!您必须将minSdkVersion增加到29,而不是compileSdkVersion。
compileSdkVersion 29