代码之家  ›  专栏  ›  技术社区  ›  Nathan Campos

将文件名索引到数据库

  •  3
  • Nathan Campos  · 技术社区  · 14 年前

    我有一个文件夹,有2000多个文件,我需要用Java在数据库(MySQL)上索引他们的文件名,但是我怎么做呢?

    PS:我已经知道的MySQL连接部分。

    3 回复  |  直到 14 年前
        1
  •  2
  •   trashgod    14 年前

    您可以像这样递归地列出目录中的所有文件:

    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();
        }
    }
    
        2
  •  1
  •   Nathan Campos    14 年前

    检查 File.listFiles

    public File[] listFiles()

    返回一个抽象路径名数组,该数组表示由该抽象路径名表示的目录中的文件。

    如果此抽象路径名不表示目录,则此方法返回空值。否则,将返回一个文件对象数组,其中一个对象对应于目录中的每个文件或目录。结果中不包含表示目录本身和目录父目录的路径名。每个生成的抽象路径名都是使用文件(文件、字符串)构造函数从这个抽象路径名构造的。因此,如果此路径名是绝对路径名,则每个生成的路径名都是绝对路径名;如果此路径名是相对路径名,则每个生成的路径名都将相对于同一目录。

        3
  •  1
  •   Nathan Campos    14 年前

    我不知道到底是什么问题。如果它正在从目录中读取文件名,请查看 File.listFiles() .