创建文件夹 并 实现文件(夹)拷贝

来源:互联网 发布:api接口网站源码 编辑:程序博客网 时间:2024/06/02 15:53

往清单文件中添加权限:

<!--往sdcard中写入数据的权限 -->    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>    <!--在sdcard中创建/删除文件的权限 -->    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>    <!--往sdcard中读取数据的权限 -->    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />


CopyUtils.java实现文件或文件夹复制操作,这段代码是从别的博客摘录下来的,但是具体原作者是谁我忘记了,如果原作者有看到的话,可以留言告知一声~3Q~:

public class CopyUtils {    /**            * 复制单个文件    * @param oldPath String 原文件路径 如:c:/fqf.txt    * @param newPath String 复制后路径 如:f:/fqf.txt    * @return boolean    */    public void copyFile(String oldPath, String newPath) {        try {            int bytesum = 0;            int byteread = 0;            File oldfile = new File(oldPath);            if (oldfile.exists()) { //文件存在时                InputStream inStream = new FileInputStream(oldPath); //读入原文件                FileOutputStream fs = new FileOutputStream(newPath);                byte[] buffer = new byte[1444];                int length;                while ( (byteread = inStream.read(buffer)) != -1) {                    bytesum += byteread; //字节数 文件大小                    System.out.println(bytesum);                    fs.write(buffer, 0, byteread);                }                inStream.close();            }        }        catch (Exception e) {            System.out.println("复制单个文件操作出错");            e.printStackTrace();        }    }    /**     * 复制整个文件夹内容     * @param oldPath String 原文件路径 如:c:/fqf     * @param newPath String 复制后路径 如:f:/fqf/ff     * @return boolean     */    public void copyFolder(String oldPath, String newPath) {        try {            mkdirs(newPath);//如果文件夹不存在 则建立新文件夹            File a=new File(oldPath);            String[] file=a.list();            File temp=null;            for (int i = 0; i < file.length; i++) {                 if(oldPath.endsWith(File.separator)){                    temp=new File(oldPath+file[i]);                }                else{                    temp=new File(oldPath+ File.separator+file[i]);                }                if(temp.isFile()){                    FileInputStream input = new FileInputStream(temp);                    FileOutputStream output = new FileOutputStream(newPath + "/" +                            (temp.getName()).toString());                    byte[] b = new byte[1024 * 5];                    int len;                    while ( (len = input.read(b)) != -1) {                        output.write(b, 0, len);                    }                    output.flush();                    output.close();                    input.close();                }                if(temp.isDirectory()){//如果是子文件夹                    copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);                }            }        }        catch (Exception e) {            System.out.println("复制整个文件夹内容操作出错");            e.printStackTrace();        }    }    private static String mkdirs(String dir) {        File file = new File(dir);        if (!file.exists()) {            file.mkdirs();        }        return dir;    }}


在MainActivity中调用,在这里,我以拷贝微信的文件和图片为例子,这里我使用了ButterKnife,如果有不会的小伙伴,可以看我的博客:[ 第三方 ]ButterKnife 懒癌患者的福音,简单的了解一下~

public class MainActivity extends Activity {    CopyUtils copyUtils = new CopyUtils();    String oldPath = "";    String newPath = "";     @BindView(R.id.btn_copy_wj)    Button btnCopyWj;    @BindView(R.id.btn_copy_tp)    Button btnCopyTp;     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ButterKnife.bind(this);    }    @OnClick({R.id.btn_copy_wj, R.id.btn_copy_tp})    public void onClick(View view) {        switch (view.getId()) {            case R.id.btn_copy_wj://拷贝微信文件                oldPath = Environment.getExternalStorageDirectory() + "/tencent/MicroMsg/Download";                newPath = Environment.getExternalStorageDirectory() + "/MyFiles/Download";                copy(oldPath, newPath);                 break;            case R.id.btn_copy_tp://拷贝微信图片                oldPath = Environment.getExternalStorageDirectory() + "/tencent/MicroMsg/WeiXin";                newPath = Environment.getExternalStorageDirectory() + "/MyFiles/WeiXin";                copy(oldPath, newPath);                 break;         }    }     /**     * 拷贝微信材料到我们的文件夹中     */    private void copy(String oldPath, String newPath) {        copyUtils.copyFolder(oldPath, newPath);    }}


布局文件activity_main.xml:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.honey.mytest.activity.MainActivity">    <Button        android:text="拷贝微信的文件到我们的app目录下"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/btn_copy_wj"        android:layout_alignParentTop="true"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true" />    <Button        android:text="拷贝微信的图片到我们的APP目录下"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@+id/btn_copy_wj"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true"        android:id="@+id/btn_copy_tp" /> art="true"        android:id="@+id/btn_az" /></RelativeLayout>







0 0
原创粉丝点击