修复类型不匹配错误" file to string "



在下面的代码中,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);
    }
}

相关内容

最新更新