修复了类型不匹配错误“file to string”

时间:2013-08-24 09:37:45

标签: java

在下面的代码中列出文件夹中的文件并将文件路径传递给方法 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]);
    }
}

4 个答案:

答案 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);
}