在下面的代码中,我解析了所有文件名,然后尝试检查
数据库以查看其是否存在。我在下面做什么错了?如果是这样,您能告诉我吗?

同样在execute命令中,我收到一条错误消息,指出listofFiles无法解析为变量。

public class FileGetName {
public String fileName;
    public static void main(String[] args) {
        File folder = new File("C");
        File[] listOfFiles = folder.listFiles();

            for (int i = 0; i < listOfFiles.length; i++) {
              if (listOfFiles[i].isFile()) {
                System.out.println(listOfFiles[i].getName());
              } else if (listOfFiles[i].isDirectory()) {
                System.out.println("Directory " + listOfFiles[i].getName());
              }
            }
    }

    public void doesFileExistinDB(String fileName) {
        PreparedStatement pst = null;
        Connection conn = null;
        ResultSet rs= null;
        try {
            conn = DBConnect.getInstance().dbOracleConnect();
            String sql= "select * from PO_Parent_List where" +
            " po_number in (fileName)";
            pst = conn.prepareStatement(sql);
            rs = pst.executeQuery();
        }
        catch (Exception e) {
            System.out.println(e);
            }
        }



    public void execute() {
        if (listOfFiles[i].isFile())
        {
            String fileName = listOfFiles[i].getName();
            System.out.println(fileName);
            doesFileExistInDb(fileName);
        }
    }

最佳答案

您需要在listOfFiles方法中传递public void execute(),例如:

public void execute(File[] listOfFiles){

}


这就是为什么您收到编译错误的原因,因为listOfFiles无法解析为变量。

或者您需要在类级别中声明变量listOfFiles

编辑:(无法从调用位置理解执行)

int i = 0;//Declare i to class level.
public void execute(File[] listOfFiles) {
        if (listOfFiles[i].isFile())
        {
            String fileName = listOfFiles[i].getName();
            System.out.println(fileName);
            doesFileExistInDb(fileName);
            i++;
        }
    }

09-25 19:12