现在有d盘的user\a\中有四个文件,d盘有my\b文件夹
问:怎么把user\a\的所有文件都拷贝到my\b文件夹内
d:\user\a文件夹内有a1,a2,a3,a4四个文件
d:\my\b---求代码学习

解决方案 »

  1.   


    public static void copyFile(String LaiYuanLuJing, String MuDiLuJing)
      {
        FileInputStream source;
        FileOutputStream target;
        try
        {
          File f1 = new File(LaiYuanLuJing);
          File f2 = new File(MuDiLuJing.substring(0,MuDiLuJing.lastIndexOf("/")));
          if(!f2.exists())
          {
            f2.mkdirs();
          }
          f2 = new File(MuDiLuJing);
          source = new FileInputStream(f1);
          target = new FileOutputStream(f2);
    //      BufferedInputStream bin = new BufferedInputStream(source);
    //      BufferedOutputStream bout = new BufferedOutputStream(target);
          byte[] b=new byte[1024*5];
          int data;
          while ( (data = source.read(b)) != -1)
          {
            target.write(b,0,data);
    //        bout.write(data,0,data);
          }
          source.close();
          target.close();
        }
        catch (Exception ex)
        {
          System.out.print(ex.getMessage());
        }
      }
      

  2.   

    给你个例子,自己研究吧import Java.io.*;public class jCOPY {
       public static void main(String args[]){
         try {
           jCOPY j = new jCOPY(); j.CopyFile(new File(args[0]),new File(args[1]));
           }
         catch (Exception e) {
           e.printStackTrace();
           }
         }   public void CopyFile(File in, File out) throws Exception {
         FileInputStream fis  = new FileInputStream(in);
         FileOutputStream fos = new FileOutputStream(out);
         byte[] buf = new byte[1024];
         int i = 0;
         while((i=fis.read(buf))!=-1) {
           fos.write(buf, 0, i);
           }
         fis.close();
         fos.close();
         }
       } 
      

  3.   


    package filego;import java.io.*;public class MyFile { public void go() throws Exception {
    File file = new File("D:\\test\\source");
    fileCopy(file); } public void fileCopy(File file) throws Exception {
    FileInputStream fis = null;
    FileOutputStream fos = null;

    File[] firstF = file.listFiles();
    for (int j = 0; j < firstF.length; j++) {
    File[] subF = firstF[j].listFiles();
    for (int i = 0; i < subF.length; i++) {
    fis = new FileInputStream(subF[i]);
    fos = new FileOutputStream("D:\\test\\target\\" + j+i + ".txt");
    int byt;
    while ((byt = fis.read()) != -1) {
    fos.write(byt);
    }

    }
    }
    fis.close();
    fos.close();
    } public static void main(String[] args) throws Exception {
    new MyFile().go();
    }}
      

  4.   

    5楼的代码是我写的,就是想得到test\\target文件夹的所有文件,基本满足我的要求,就是拷贝后的文件名不满意
    fos = new FileOutputStream("D:\\test\\target\\" + j+i + ".txt"); 
    就这一句有问题,文件名变成12.txt等等(不是我想要的)请问:
    其实我是想拷贝来的文件名与原来的文件名相同,请问怎么修改上面的代码
      

  5.   

    for (int i = 0; i < subF.length; i++) { String fileName = subF[i].getName();
    fis = new FileInputStream(subF[i]); 
    fos = new FileOutputStream("D:\\test\\target\\" + fileName ); 
    int byt; 
    while ((byt = fis.read()) != -1) { 
    fos.write(byt); 
    } } 这里改一下就好了,呵呵
      

  6.   

    //把from文件夹中的内容拷贝到to文件夹中
    public class copyDirectiory { 
    public static void main(String args[]) throws IOException 

    String url1="D:\\Java_prac\\from"; 
    String url2="D:\\Java_prac\\to"; 
    (new File(url2)).mkdirs(); 
    File[] file=(new File(url1)).listFiles(); 
    for(int i=0;i<file.length;i++){ 
    if(file[i].isFile())

    FileInputStream input=new FileInputStream(file[i]); 
    FileOutputStream output=new FileOutputStream(url2+"\\"+file[i].getName()); 
    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(file[i].isDirectory())

    copyDirectiory(url2+"/"+file[i].getName(),url1+"/"+file[i].getName()); 



    public static void copyDirectiory(String file1,String file2) throws IOException

    (new File(file1)).mkdirs(); 
    File[] file=(new File(file2)).listFiles(); 
    for(int i=0;i<file.length;i++)

    if(file[i].isFile())

    FileInputStream input=new FileInputStream(file[i]); 
    FileOutputStream output=new FileOutputStream(file1+"\\"+file[i].getName()); 
    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(file[i].isDirectory())

    copyDirectiory(file1+"\\"+file[i].getName(),file2+"\\"+file[i].getName()); 


    } } 

      

  7.   

    直接调用dos命令,无责任猜想,没验证,xcpoy也忘记怎么写了。
    Runtime r = Runtime.getRuntime();
    Process p = null;
    try {
    p = r.exec("cmd /C xcopy d:\\usr\\a\\ d:\\usr\\b\\ /E");
    } catch (Exception e) {
    e.printStackTrace();
    }
      

  8.   

    package filego;import java.io.*;public class MyFile { public void go() throws Exception {
    File file = new File("D:\\159电影\\上传\\backup");
    fileCopy(file);
    System.out.println(file.getName()); } public void fileCopy(File file) throws Exception {
    FileInputStream fis = null;
    FileOutputStream fos = null; File[] firstF = file.listFiles();
    firstF[1].getName();
    for (int j = 0; j < firstF.length; j++) {
    File[] subF = firstF[j].listFiles();
    for (int i = 0; i < subF.length; i++) {
    fis = new FileInputStream(subF[i]);
    String st=subF[i].getName();
    fos = new FileOutputStream("D:\\chongqing159fac\\spoon\\record\\"+st);
    int byt;
    while ((byt = fis.read()) != -1) {
    fos.write(byt);
    } }
    }
    fis.close();
    fos.close();
    } public static void main(String[] args) throws Exception {
    new MyFile().go();
    }}
      

  9.   


    在大家的帮助下,终于写出需要的代码,但仍感觉不够完美,尤其是关闭流,有好的改进方式请与我联系
    /*
     * 1 本程序的作用是把指定文件夹下的所用文件(只是文件)都拷贝到另外的文件夹下
     * 2 比如源文件夹下会有许多的文件和和文件夹,文件会套到深层的文件夹下,本程序就是把深层的文件全部拷贝出,放在目的文件的第一层
     * 3 也可把这个文件夹下的所有语句拷贝出,放在单一目的文件下(allInOne.txt),去掉得备注即可
     * */import java.io.*;public class ManyFileCopy { String source = "D:\\first\\";
    String recort = "D:\\second\\";
    FileInputStream fis = null;
    FileOutputStream fos = null; public void start() throws Exception {
    File file = new File(source);
    fileCopy(file);
    fis.close();
    fos.close();
    } public void fileCopy(File file) throws Exception {
    File[] subFile = file.listFiles();
    for (int j = 0; j < subFile.length; j++) { if (subFile[j].isDirectory()) {
    fileCopy(subFile[j]);
    } if (subFile[j].isFile()) {
    fis = new FileInputStream(subFile[j]);
    String fileName = subFile[j].getName();
    fos = new FileOutputStream(recort + fileName);
    //取消下句注释,可以把一个文件夹的文件都汇聚到allInOne.txt文件下
    //fos = new FileOutputStream(recort + "allInOne.txt",true);
    int byt;
    while ((byt = fis.read()) != -1) {
    fos.write(byt);
    }
    } } } public static void main(String[] args) throws Exception {
    ManyFileCopy manyFileCopy=new ManyFileCopy();
    manyFileCopy.start();
    }}
      

  10.   

    关闭流
    try{...
    }catch(...){...
    }finally{
    if(fis != null){
    try{
    fis.close();
    }catch(Exception e){
    fis = null;
    }
    }
    if(fos != null){
    try{
    fos.close();
    }catch(Exception e){
    fos = null;
    }
    }
    }