Java文件复制

主要是工作代码,无解释。

    /**
     * 将文件或文件夹source复制到dest
     * <br>目标文件检测:
     * <br> a.当文件不存在时:需要创建文件
     * <br>  根据是否有后缀名来确定是创建的是文件夹还是文件,有后缀名时创建文件
     * <br>  如果创建的是文件夹则会将source复制到dest文件夹中。
     * <br>  如果是文件,则直接将source复制为dest
     * <br> b.当文件存在时:需要判断目标文件是文件夹还是文件
     * <br>  如果是文件夹,在该文件夹下创建以来源文件名命名的文件
     * @param source
     * @param dest
     */
    public static void moveFile(File source,File dest) throws FileNotFoundException,IOException{
        FileInputStream fis = null;
        FileChannel fc= null;
        FileOutputStream fout= null;
        WritableByteChannel to= null;
        try {
            if(!source.exists()){
                System.out.println("源文件不存在!");
                return ;
            }
            if(source.isDirectory()){
                File[] srcs = source.listFiles();
                for(File src:srcs){
                    moveFile(src,new File(dest.getPath()+File.separator+src.getName()));
                }
            }else{
                if(!dest.exists()){
                    if(!new File(dest.getParent()).exists()){
                        new File(dest.getParent()).mkdirs();
                    }
                    //根据是否有后缀名来确定是创建的是文件夹还是文件,有后缀名时创建文件。
                    if(dest.getName().matches(".*\\..*")){
                        dest.createNewFile();
                    }else{
                        dest.mkdir();
                        dest = new File(dest.getPath()+File.separator+source.getName());
                        dest.createNewFile();
                    }
                }else{
                    //当目标文件存在时,需要判断目标文件是文件夹还是文件,如果是文件夹,在该文件夹下创建以来源文件名命名的文件
                    if(!dest.getName().matches(".*\\..*")){
                        dest = new File(dest.getPath()+File.separator+source.getName());
                        dest.createNewFile();
                    }
                }
                fis = new FileInputStream(source);
                fc=fis.getChannel();
                fout=new FileOutputStream(dest);
                to=fout.getChannel();
                fc.transferTo(0,fc.size(),to);
                fis.close();
                fc.close();
                fout.flush();
                fout.close();
                to.close();
            }
        } catch (FileNotFoundException e) {
            throw e;
        } catch (IOException e) {
            throw e;
        } finally {
            if(fis!=null){
                fis.close();
            }
            if(fc!=null){
                fc.close();
            }
            if(fout!=null){
                fout.flush();
                fout.close();
            }
            if(to!=null){
                to.close();
            }
        }
    }

Java文件复制

时间: 2024-11-08 19:56:51

Java文件复制的相关文章

Java File IO 练习题:把一个文件夹下的.java文件复制到另一个文件夹下的.txt文件

package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.In

编写一个程序,将 d: \ java 目录下的所有.java 文件复制到d: \ jad 目录下,并 将原来文件的扩展名从.java 改为.jad

1.编写一个程序,将 d: \ java 目录下的所有.java 文件复制到d: \ jad 目录下,并 将原来文件的扩展名从.java 改为.jad package copy; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; i

Java 文件复制

摘要 尽管Java提供了一个可以处理文件的IO操作类. 但是没有一个复制文件的方法. 复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候. 然而有几种方法可以进行Java文件复制操作,下面列举出4中最受欢迎的方式. 1.使用File Streams复制 这是最经典的方式将一个文件的内容复制到另一个文件中. 使用FileInputStream读取文件A的字节,使用FileOutputStream写入到文件B. 这是第一个方法的代码: public static void copyFil

java文件复制函数

在写代码中,经常会需要复制文件.这时候就可以把这些函数放到工具类里面. 下面是一个复制文件的函数: public class CopyFileUtil { private static String MESSAGE = ""; /** * 复制单个文件 * * @param srcFileName * 待复制的文件名 * @param descFileName * 目标文件名 * @param overlay * 如果目标文件存在,是否覆盖 * @return 如果复制成功返回true

编写一个程序,将 d:\java 目录下的所有.java 文件复制到 d:\jad 目录下,并 将原来文件的扩展名从.java 改为.jad。

package IO; import java.io.*; public class FileCopy { public static void main(String[] args) throws Exception { File srcDir = new File("java"); if(!(srcDir.isDirectory() && srcDir.exists())) { throw new Exception("目录不存在"); } //

将某一个路径下的所有java文件复制到另外一个文件夹下,并重命名为jad文件

需求很简单,程序也不难.看到题目之后,自己第一次没有使用eclipse,而是使用了编辑器,手编了一个程序,简陋,但实现了功能. 代码如下: import java.io.*; class Copy{ public void copy(String srcPath, String targetPath) throws Exception{ File srcFolder = new File(srcPath); File tarFolder = new File(targetPath); if(!t

java使用字节流和字符流实现文件复制

大家在Java开发中都会遇到文件复制的文件,众所周知,需要通过文件输入输出流实现. 那究竟该怎么做那,话不多说,直接上代码: 一,使用字节流复制文件 public class FileByteCopy {public static void main(String[] args) { FileByteCopy f= new FileByteCopy(); try { f.copy("d:/File/1.txt","d:/CopyFile/1.txt"); } cat

java文件和文件夹的增删复制

在使用java进行开发时经常会用到文件和文件夹的增删复制等方法,我写了一个小工具类,和大家分享,希望大家指正: package com.wangpeng.utill; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.InputStream; import java.io.PrintWrite

java用流实现创建文件夹, 文件改名, 文件删除, 文件复制

创建TestFileManager类,在本类中分别创建factFile()方法(遍历文件夹中所有的文件).console()方法(换行).createFolder()方法(创建文件夹). renameFile()方法(改名).deleteFile()方法(删除文件).copyFile()方法(复制文件).showContent()(每一次操作完成重新输出所有文件): package com.maya.hanqi.filemanager; import java.io.BufferedReader