在下面的代码中列出文件夹中的文件并将文件路径传递给方法 loadCSV 。但我在这里遇到类型不匹配错误。请帮忙
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]);
}
}
答案 0 :(得分:1)
这一行
String Folderfilename= list[i];
但您的列表是File
对象类型的数组。
所以你不能assign
那样。类型不匹配就在那里。
您可能需要getName()。
String Folderfilename= list[i].getName();
请在使用上述行之前添加适当的检查。
答案 1 :(得分:0)
这样做
File file = list[i];
String Folderfilename= file.getName()
答案 2 :(得分:0)
代码中有两处更改:
列表[I] .getName();
和
if(list [i] .isDirectory())继续; //以避免异常并继续查找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);
}
}
答案 3 :(得分:0)
我认为您正在寻找以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);
}