0

実際、あるフォルダーのすべてのファイルと別のフォルダーの .png ファイルを圧縮しようとしています。1 つのフォルダーからすべてのファイルを取得できます。しかし、Java の別のフォルダーから .png ファイルを取得できません。方法はありますか?

コード:

public class Zip {
    public static void zip(String filepath,String reportFileName){
        try {
            File inFolder=new File(filepath);
            File inFolder1=new File("../Agent_Portal_Auto_Testing/ReportCharts");
            File outFolder=new File(reportFileName);
            ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(outFolder)));
            BufferedInputStream in = null;
            byte[] data  = new byte[1000];
            String files[] = inFolder.list();
            String files1[]=inFolder1.list();
            for (int i=0; i<files.length; i++) {
                in = new BufferedInputStream(new FileInputStream
                        (inFolder.getPath() + "/" + files[i]), 1000);  
                out.putNextEntry(new ZipEntry(files[i])); 
                int count;
                while((count = in.read(data,0,1000)) != -1) {
                    out.write(data, 0, count);
                }
            }

            for (int i=0; i<files1.length; i++) {
                in = new BufferedInputStream(new FileInputStream
                        (inFolder1.getPath() + "/" + files1[i]), 1000);  
                out.putNextEntry(new ZipEntry(files1[i])); 
                int count;
                while((count = in.read(data,0,1000)) != -1) {
                    out.write(data, 0, count);
                }
            }
            out.closeEntry();
            out.flush();
            out.close();

        }
        catch(Exception e) {
            e.printStackTrace();
        } 
    }   
}

上記のコードでは、ReportCharts フォルダーからすべてのファイルを取得しています。しかし、.png ファイルのみを取得する必要があります。

4

2 に答える 2

4

http://docs.oracle.com/javase/7/docs/api/java/io/File.html#listFiles(java.io.FileFilter)を参照してください。

ファイル フィルターを使用して、PNG ファイルのみを除外できます。

http://docs.oracle.com/javase/7/docs/api/java/io/FileFilter.html

 File [] pngFiles = directory.listFiles(new FileFilter() {
     public boolean accept(File file) {
         return file.isFile() && file.getName().toLowerCase().endsWith(".png");
     }
 });
于 2013-10-31T18:46:12.487 に答える
0

ファイルが次の.pngものであるかどうかの確認を追加できます。

if (files1[i].contains(".png"))

あなたのforループで。

于 2013-10-31T18:47:37.217 に答える