将文件列表从一个位置复制到另一个位置

时间:2014-04-11 10:59:45

标签: java file copy

我在txt文件中有文件名列表。

说A,B,C,D

现在我知道C:/data/中存在文件列表。此数据文件夹还包含其他文件,如A ,, B,C,D,A1,B1等...,现在我想将这些A,B,C,D文件从C:/data/复制到{{1} }

我有一个java代码,它只将一个文件从一个位置复制到另一个位置。但是我有C:/dataOne/文件中的文件名列表。

这就是我的尝试。

txt

我的public static void main(String[] args) { InputStream inStream = null; OutputStream outStream = null; try{ File afile =new File("C:\\folderA\\A.txt"); File bfile =new File("C:\\folderB\\A.txt"); inStream = new FileInputStream(afile); outStream = new FileOutputStream(bfile); byte[] buffer = new byte[1024]; int length; //copy the file content in bytes while ((length = inStream.read(buffer)) > 0){ outStream.write(buffer, 0, length); } inStream.close(); outStream.close(); System.out.println("File is copied successful!"); }catch(IOException e){ e.printStackTrace(); } } 个文件中有大约100个文件名。

如何将所有100个文件从一个位置复制到另一个位置。

2 个答案:

答案 0 :(得分:4)

如果您使用Java 7或更高版本,则可以执行此操作:

final Path srcdir = Paths.get("C:\\data");
final Path dstdir = Paths.get("C:\\dataOne");

for (final Path path: Files.newDirectoryStream(srcdir))
    Files.copy(path, dstdir.resolve(path.getFileName()));

如果您不想复制所有文件,可以使用DirectoryStream过滤DirectoryStream.Filter


如果要复制的文件的名称位于文件中,请执行以下操作:

final Path fileNames = Paths.get("filewithfilenames");
final List<String> allFilesByName 
    = Files.readAllLines(fileNames, StandardCharsets.UTF_8);

然后使用Paths.get()allFilesByName的每一行获取路径。根据这些路径是相对路径还是绝对路径,您可能必须.resolve()srcdir


Java 8使它更容易,因为它有Files.lines();这意味着您可以.map()Path,然后.forEach()路径,Files.copy()

答案 1 :(得分:0)

查看此代码。复制整个文件夹,包括从源到目标的所有文件。

import java.io.*;

public class copydir
{
    public static void main(String args[])
    {
        File srcFolder = new File("E://Paresh/programs/test");
        File destFolder = new File("D://paresh");

        if(!srcFolder.exists())
        {

              System.out.println("Directory does not exist.");
               //just exit
             System.exit(0);
        }
        else{

               try{
                    copyDirectory(srcFolder,destFolder);
                          }
               catch(IOException e)
                {
                        e.printStackTrace();
                        //error, just exit
                            System.exit(0);
                    }
            }
        System.out.println("Done");
    }

    public static void copyDirectory(File src , File target) throws IOException 
    {
        if (src.isDirectory()) 
        {
                if (!target.exists()) 
            {
                    target.mkdir();
                }

                String[] children = src.list();
                for (int i=0; i<children.length; i++) 
            {
                     copyDirectory(new File(src, children[i]),new File(target, children[i]));
                }
        }
        // if Directory exists then only files copy
        else 
        {

                InputStream in = new FileInputStream(src);
                OutputStream out = new FileOutputStream(target);

                // Copy the bits from instream to outstream
                byte[] buf = new byte[1024];
                int len;
                while ((len = in.read(buf)) > 0) 
            {
                        out.write(buf, 0, len);
            }
            in.close();
                out.close();

            }


    }    

}

您的欢迎