2011-04-22 111 views
1

您好我正在一个简单的程序和程序的设置我需要程序检查一个目录中的zip文件和任何zip文件需要被移动到另一个夹。Java移动文件与某些文件扩展名

可以说我有文件夹1,它包含6个zip文件,然后我呼吁文件夹2,我需要所有的拉链,仅在文件夹1的拉链的另一个文件夹移动到文件夹2

谢谢你的任何帮助,一个这个问题。

顺便说一句我是一个小白所以任何代码样本,将不胜感激

回答

2

对于每个文件在folder1,使用String#endsWith()以查看是否该文件名与".zip"结束。如果是,请将其移至folder2FilenameFilter提供了一个很好的方法来做到这一点(尽管这不是绝对必要的)。

它看起来像这样(未测试):

File f1 = new File("/path/to/folder1"); 
File f2 = new File("/path/to/folder2"); 

FilenameFilter filter = new FilenameFilter() 
{ 
    @Override public boolean accept(File dir, String name) 
    { 
     return name.endsWith(".zip"); 
    } 
}; 

for (File f : f1.listFiles(filter)) 
{ 
    // TODO move to folder2 
} 
1

匹配的文件系统中的“* .ZIP”的模式被称为“文件通配符。”您可以使用以下文档轻松选择所有这些文件:“.zip”file glob: Finding Files。 java.nio.file.PathMatcher是你想要的。或者,您可以按照正常的方式列出目录,并使用该文件的名称以及String的“.endsWith()”方法,该方法将执行类似的操作。

+0

+1提供NIO备选方案 – jathanasiou 2013-08-26 15:09:48

0

名单基本目录的所有文件,如果它与 '.ZIP' 结束它移动到DESTDIR

// baseDir = folder1 
    // destDir = folder2 

    File[] files = baseDir.listFiles(); 
    for (int i=0; i<files.length; i++){ 
     if (files[i].endsWith(".zip")){ 
      files[i].renameTo(new File(destDir, files[i].getName())); 
     } 
    } 

API renameTo

0

使用FilenameFilter

String pathToDir = "/some/directory/path"; 
File myDir = new File(pathToDir); 
File[] zipFiles = myDir.listFiles(new FilenameFilter() { 

    public boolean accept(File dir, String name) { 
    return name.endsWith(".zip") 
    } 
}); 
0

我的解决方案:

import java.io.*; 
import javax.swing.*; 
public class MovingFile 
{ 
    public static void copyStreamToFile() throws IOException 
    { 
     FileOutputStream foutOutput = null; 
     String oldDir = "F:/CAF_UPLOAD_04052011.TXT.zip"; 
     System.out.println(oldDir); 
     String newDir = "F:/New/CAF_UPLOAD_04052011.TXT.zip.zip"; // name the file in destination 

     File f = new File(oldDir);    
     f.renameTo(new File(newDir)); 
    } 
    public static void main(String[] args) throws IOException 
    { 
     copyStreamToFile(); 
    } 
}