在下面的代码中,im列出文件夹中的文件,并将文件路径传递给方法loadCSV。但我在这里得到了类型不匹配的错误。plz帮助
String Folderfilename= list[i];
可以说"无法将文件转换为字符串"
File foldername = new File(filename);
System.out.println("actual"+foldername);
File[] list = foldername.listFiles();
for(int i=0; i<list.length; i++){
System.out.println("inside for" +list.length);
String substring = list[i].getName().substring(0, list[i].getName().indexOf("."));
System.out.println("substring" +substring);
if(list[i].isFile() && list[i].getName().contains(".csv")) {
////////getting mismatch error in the below line
String Folderfilename= list[i];
new SCLoad().loadCSV(con,Folderfilename, ImportTable);
System.out.println("CLASS NAME "+list[i]);
}
}
在行中
String Folderfilename= list[i];
但是您的列表是一个类型为File
对象的数组。
所以你不能那样assign
。类型不匹配。
可能您需要getName()。
String Folderfilename= list[i].getName();
在使用上述行之前,请添加适当的检查。
我想您正在寻找以csv结尾的文件。您可能应该使用FileNameFilter
。这是的一个片段
File dir = new File("/tmp/");
File[] csvFiles = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith("csv"); //get all csv files
}
});
//now load these csvFiles using whatever loaders
for (File csvFile : csvFiles) {
// I am guessing SCLoad requires a complete path.
new SCLoad().loadCSV(con,csvFile.getCanonicalPath(), ImportTable);
}
执行此
File file = list[i];
String Folderfilename= file.getName()
代码中的两个更改:
list[i].getName();
和
if(list[i].isDirectory())continue//以避免出现异常并继续查找csv文件。
String folderFileName = "";
File foldername = new File(filename);
File[] list = foldername.listFiles();
for(int i=0; i<list.length; i++){
if( list[i].isDirectory() )
continue;
folderFileName = list[i].getName();
if( folderFileName.toLowerCase().endsWith(".csv") ) {
System.out.println("csv file: " + folderFileName);
new SCLoad().loadCSV(con,folderFileName, ImportTable);
}
}