2016-06-26 4 views
0

説明:メインディレクトリを解析して、 ".jpg"のすべてのファイルを検索しようとしています。コードですべてのファイルそれが必要です。例 "C:\ Ravi \ Sources"、このディレクトリには、.xml、.jpg、.gifのファイルが混在しています。このディレクトリ内にサブフォルダがありますが、わかりません。 自分のコードを変更する方法サブディレクトリも確認してください。ヘルプがここで必要とされるJava:特定の種類のファイルを確認するためのディレクトリとサブディレクトリの解析

専門知識:

コードスニペット:

enter code here 




import java.io.File; 
import java.io.FilenameFilter; 
import java.io.IOException; 
import java.awt.image.BufferedImage; 

import javax.imageio.ImageIO; 
import java.io.PrintStream; 


public class Subdirectory { 

    static File f = new File("C:\\Users\\kasharma\\Desktop\\Travelocity R8.3_8.3.0.apk\\res");// File f will represent the folder.... 

static String[] extensions = new String[]{"png", "jpg", "gif" }; // Declaring array of supported filters... 



// Applying filter to identify images based on their extensions... 

static FilenameFilter Image_Filter = new FilenameFilter() { 
    public boolean accept(File f, String name) 
    { 
     for(String ext: extensions){ 
      if(name.endsWith("."+ ext)){ 
       return(true); 
      } 
     } 
     return(false); 
    } 
    }; 

    public static void goThroughDirectories(String path) 
    { 

     } 

    public static void main(String[] args) { 

      String path = "C:\\Users\\kasharma\\Desktop\\Travelocity R8.3_8.3.0.apk\\res"; 


      for (File file : f.listFiles(Image_Filter)) 
       { 
       if (f.isDirectory()) goThroughDirectories(path+f.getName()); 

       BufferedImage img = null; 

       try { 
        img = ImageIO.read(file); 
        System.out.println("image "+ file.getName()); 
       } catch (IOException e) { 
        // handle errors here 
       } 

     } 
     } 
    } 

答えて

2

これはあなたのアイデアを与えるだろう。これは疑似コードです。

void goThroughDirectories(String path) 
{ 
    for(File f : fileList) 
    { 
     if(f.isDirectory()) goThroughDirectories(path+f.getName()); 
     else { 
       //do something 
      } 
    } 
} 
+0

与えるのでそれはまだ私を助けていません。ここでは、同時に.jpgためレイジー人口ストリームとフィルタを返しfindを使用しても、よりよい解決策だ

public static void main(String[] args) throws Exception { Path p = Paths.get("D:/"); Files.walkFileTree(p, new SimpleFileVisitor<Path>() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { System.out.println(file.toFile().getName()); return FileVisitResult.CONTINUE; } } ); } 

walkFileTree使用

'fileList'のエラーです。 –

+0

これは擬似コードです。それをコピー&ペーストするだけではいけません。あなたのコードでは、f.listFiles(Image_Filter)と呼ばれています)。 – Shiro

+0

メインか外側か? –

3

は特にwalkFileTree(...)find(...)方法、java.nio.filesを見てください。 Java 8にはこのための機能が組み込まれています。

public static void main(String[] args) throws Exception 
{ 
    Path p = Paths.get("D:/"); 
    Files 
     .find(
      p, 
      Integer.MAX_VALUE, 
      (path,attr) -> path.toString().endsWith(".jpg")) 
     .forEach(path -> System.out.println(path.toFile().getName())); 
} 
関連する問題