2014-09-25 4 views
0

제목은 모두입니다. 내가 읽고 TableView에 쓸 파일의 디렉토리 싶어요. 이 작업을 수행하는 방법? 선택한 파일과 폴더를 배열로 처리하고 루프를 통해 하나씩 추가하고 열어 보았습니다. 그러나 이것을 java로 변환하는 방법을 모르지만 표준 라이브러리는 단일 파일/디렉토리를 열지 않는 유용한 메소드를 포함하지 않습니다. .JavaFX - 디렉토리에서 TableView로 모든 파일을 추가하는 방법

: 재귀 (주어진 깊이) 하위 디렉토리를 통해 이동하려면 java.nio의 API를 사용

TableView<File> table = new TableView<>(); 
// configure table columns etc 
File dir = ... ; 
table.getItems().addAll(dir.listFiles()); 

:

+0

테이블에 파일 목록을 표시 하시겠습니까? 또는 파일의 내용을 어떤 방식 으로든? –

+0

예, 지금 JavaFX에서 뮤직 플레이어를 쓰고 있습니다. "Music"폴더의 DirectoryChooser를 클릭하고 mp3의 –

답변

1

그냥 디렉토리에있는 파일을 얻고 싶다면

TableView<Path> table = new TableView<>(); 
// configure table columns etc 

File fileDir = directoryChooser.showDialog(mainStage); 
if (fileDir != null) { // if the user chose something: 
    Path dir = fileDir.toPath() ; 
    int depth = ... ; // maximum depth to search, use Integer.MAX_VALUE to search everything 
    Files.find(dir, depth, (path, attributes) -> 
     path.getFileName().toString().toLowerCase().endsWith(".mp3")) // select only mp3 files 
     .forEach(table.getItems()::add); 
} 

마지막 (긴) 명령문에서 Files.find(...)은 (Java 8) Stream<Path>을 생성합니다. 코드는 해당 스트림에서 forEach(...)을 호출하여 각 요소를 표보기의 items에 추가합니다.

+0

과 함께 모든 하위 폴더를 추가하고 싶습니다. 그러나 선택한 디렉토리가 어디에 저장되어 있는지 File 변수를 지정해야합니까? –

+0

어디서나 필요합니다. 내가 그 질문을 이해하는지 모르겠다. –

+0

두 번째, 재귀 적 방법에 따르면. 파일 변수가 표시되지 않습니다. 바보 같은 질문에 대한 미안하지만이 API는 내게 새로운 comepletly입니다. 마치 DirectoryChooser에서 디렉토리를 연 다음이 Files.find 메소드가 실행되는 것과 같습니다. –

관련 문제