2016-03-18 14 views
0

ディレクトリのファイル名からファイルパスを取得するには src/test/resources/datasheetsディレクトリがあります。Javaのファイル名からファイルパスを取得する

src/test/resources/datasheets 
xyz/a1.txt 
abc/b1/txt

それは私がファイル名に EXを与える場合は、ファイルパスを取得する必要があり、再び

を多くのディレクトリを持っている:私は事前にsrc/test/resources/datasheets/xyz/a1.txt

感謝として取得する必要がある「a1.txt」

+0

あなたが私たちにあなたが難しいかもしれないところを見ることができるように私たちにあなたのコードを示すことができますか? [最小限で完全で検証可能な例の作成方法](http://stackoverflow.com/help/mcve) – pczeus

+0

'abc/b1/txt'は' abc/b1.txt'ではありませんか? – Pshemo

+0

テストリソースのディレクトリを 'src/test/resources'として定義している' maven'のようなものからテストを実行していますか?もしそうなら、テストを実行すると、リソースはビルドディレクトリにコピーされ、 'a1.txt'リソースへのパスは実際には' datasheets/xyz/a1.txt'のみになります。 – AJNeufeld

答えて

0

[File docs]を参照していれば、この情報に簡単にアクセスできます。

File myDir = File(String pathname); 
if(myDir.isDirectory()) { 
    File[] contents = myDir.listFiles(); 
} 

あなたのcontents[]がどのように見えるかを見て、必要な修正を加えます。

1

すべてのサブディレクトリを確認するための再帰的なメソッドを作成するだけです。私はそれがうまくいくことを願っています:

import java.io.File; 

public class PathFinder { 

    public static void main(String[] args) { 
     String path = getPath("a1.txt", "src/test/resources/datasheets"); 
     System.out.println(path); 
    } 

    public static String getPath(String fileName, String folder) { 
     File directory = new File(folder); 

     File[] fileList = directory.listFiles(); 
     for (File file : fileList) { 
      if (file.isFile()) { 
       if(fileName.equals(file.getName())) { 
        return file.getAbsolutePath(); 
       } 
      } else if (file.isDirectory()) { 
       String path = getPath(fileName, file.getAbsolutePath()); 
       if(!path.isEmpty()) { 
        return path; 
       } 
      } 
     } 

     return ""; 
    } 
} 
関連する問題