在下面的代码中,我解析了所有文件名,然后尝试检查
数据库以查看其是否存在。我在下面做什么错了?如果是这样,您能告诉我吗?
同样在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++;
}
}