2016-08-11 14 views
0

Files.walk関数を使用して、メインディレクトリのサブディレクトリにあるファイルを取得します。例えば:メインフォルダとサブフォルダ名をJavaで取得する方法

/path/to/stuff/foo/bar1/myfile.sql 
/path/to/stuff/foo/bar1/myfiles.sql 
/path/to/stuff/foo/bar2/myfile.sql 
/path/to/stuff/foo/bar3/myfile.sql 
/path/to/stuff/foo/bar4/myfile.sql 
/path/to/stuff/foo/bar5/ 
/path/to/stuff/foo/bar6/myfile.sql 
/path/to/stuff/foo/bar7/myfile.sql 
/path/to/stuff/foo/bar8/myfile.sql 
/path/to/stuff/foo/bar9/myfile.sql 

これは私のコードです:

私は、ファイル名とsubfoldernameを取得し、ファイル名の例ループ1とすることを確認する必要がありビルドファイルで
Files.walk(Paths.get("/path/to/stuff")).forEach(filePath -> { 
      if (Files.isRegularFile(filePath)) { 
       buildFiles(); 
      } 
      }); 

path=/path/to/stuff/foo/bar1/myfile.sqlとファイル名がすべきfoo_bar1.sqlとなります。どうすればいい?

+2

'cmd'配列を出力しようとしましたが、それをコンソールに置いても全く同じかどうか確認しましたか?アイデアのために – Raskayu

+0

ありがとう。今働いている。 –

+0

今動作している場合は、質問を閉じるように依頼してください:) – Raskayu

答えて

0

パスを使用してファイルを作成する必要があります。それはあなたのファイルを管理するのに役立ちます。私はあなたのファイルを上書きしません

新しいファイル()

でファイルを作成する場合は、あなたが疑問に思うと思います。それはあなたのファイルへのJavaの参照のいくつかの並べ替えを持っていることに役立ちます心配しないでください。

Files.walk(Paths.get("/path/to/stuff")).forEach(filePath -> { 
        if (Files.isRegularFile(filePath1)) { 
        File file1 = new File(filePath1); 
        String folderName = file.getName(); 
        Files.walk(Paths.get("/path/to/stuff"+folderName)).forEach(filePath2 -> { 
          if (Files.isRegularFile(filePath2)) { 
          File file2 = new File(filePath2); 
          String subFolderName = file2.getName(); 
          String result = folderName+subFolderName+".sql"; 
          builFiles(result) 
          } 
        }); 
        } 
       }); 
+0

これはうまくいかない。 '/ path/to/stuff/foo/bar1/myfile.sql'のパスからファイル名を' foo_bar1.sql'にする必要があります。 'buildFiles()'関数は正確にその理由がありましたが、簡単な論理を思い付くことができます。 –

+0

最後の2つのサブフォルダ名を取得する方法はありますか? –

+0

私はあなたが望むものを見ることができます。私はあなたが最初のフォルダを取得することができると思う、その後、あなたはそのフォルダを検索し、それが含まれている要素(フォルダ)をキャッチし、名前を取得し、最初のフォルダ名を連結し、拡張子.sqlを追加します。実際に私の答えを見てみてください私はそれを編集したばかりですあなたは今何を意味するのか理解したことを願っています – vvs

関連する問題