2010-05-19 6 views
3

2000 개 이상의 파일이있는 폴더가 있고 Java를 사용하여 데이터베이스 (MySQL)에서 파일 이름을 인덱싱해야하지만 어떻게해야합니까?데이터베이스에 파일 이름 인덱싱

추 신 : 이미 알고있는 MySQL 연결 부분.

+1

당신이 (위의 모든의), INSERT 문을 작성, 운영 체제에서 파일 이름을 받고있는 MySQL 테이블을 설정하는 데 도움이 필요합니까 ...? –

+0

그래, 그게 내가 필요한거야. –

답변

2

당신은 재귀 적으로이 같은 디렉토리에있는 모든 파일을 나열 할 수 있습니다

import java.io.*; 

public class ListDir { 

    public static void main(String args[]) { 
     File root; 
     if (args.length > 0) root = new File(args[0]); 
     else root = new File(System.getProperty("user.dir")); 
     ls(root); 
    } 

    private static void ls(File f) { 
     File[] list = f.listFiles(); 
     for (File file : list) { 
      if (file.isDirectory()) ls(file); 
      else System.out.println(file); 
     } 
    } 
} 

참조에게 또한 Using Prepared Statements합니다. 아마 이런 식으로 뭔가 :

PreparedStatement ps = conn.prepareStatement("INSERT INTO Files VALUES(?)"); 
File userDir = new File(System.getProperty("user.dir")); 
File[] files = userDir.listFiles(); 
for (File f : files) { 
    if (f.isFile()) { 
     ps.setString(1, f.getAbsolutePath()); 
     ps.executeUpdate(); 
    } 
} 
+0

그리고 이렇게 할 수 있습니다 : "INSERT"+ 파일 이름 "나머지는 SQL 문",'filsames'를'ls (root)'의 리턴 된 변수로 사용할 수 있습니까? –

+1

나는'PreparedStatement'를 사용하고 각 파일에 행을 삽입하기 위해'println()'대신'setString()'을 호출 할 것입니다. – trashgod

+0

고마워, 나는 그 문서들을 읽고있어. 나는 여기에서 계속할 수 있다고 확신한다. –

1

정확하게 어떤 문제가 있는지 잘 모르겠습니다. 디렉토리에서 파일 이름을 읽는 경우 File.listFiles()을 살펴보십시오.

1

점검 File.listFiles

public File[] listFiles()

이 추상 패스 명이 나타내는 디렉토리 내의 파일을 나타내는 추상 패스의 배열을 돌려줍니다.

이 추상 경로명이 디렉토리를 나타내지 않는 경우,이 메소드는 null을 리턴합니다. 그렇지 않으면 디렉토리의 각 파일 또는 디렉토리에 하나씩 File 객체의 배열이 반환됩니다. 디렉토리 자체와 디렉토리의 상위 디렉토리를 나타내는 경로 이름은 결과에 포함되지 않습니다. 결과의 추상 패스 명이 File (File, String) 생성자을 사용해이 추상 패스 명으로부터 구축됩니다. 따라서이 경로 이름이 절대 경로이면 각 결과 경로 이름은 절대 경로입니다. 이 경로명이 상대 경로이면 각 결과 경로 이름은 동일한 디렉토리에 상대적입니다.