2013-08-24 77 views
-1

在下面的代碼清單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]); 
    } 
} 
+0

'list [i] .getName()'?您在代碼的其餘部分執行此操作。 –

+0

不要忘記,如果文件擴展名是CSV,CSV,CSV等參加我的回答看看下面的代碼,你的SCLoad不會運行... – MrSimpleMind

回答

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); 
} 
+0

嗨,感謝您的回覆......正確的loadCSV需要完整的路徑。我用你的上面的代碼。但是我得到了for(File csvFile:csvFiles)的空指針異常。請幫助 – 123HIS

+0

@ 123HIS您必須將目錄傳遞給'dir'。它應該像'文件DIR =新的文件(「/路徑/到/目錄/」);' – bsd

+0

@ 123HIS編輯你的問題,我們展示了新的代碼片段。或者讓我猜。 1.用2個反斜槓反斜槓。在路徑的末尾添加2個反斜槓。像'C:\\ homepath \\ csvFolder \\' – bsd

1

在這裏,在線路

String Folderfilename= list[i]; 

但你的列表是類型File對象的數組。

所以你不能像assign不匹配that.Type在那裏。

可能是你需要getName()

String Folderfilename= list[i].getName(); 

請在使用上述行之前添加適當的檢查。

+0

如何解決這個問題?請幫忙 – 123HIS

+0

@ 123HIS你需要文件名作爲字符串? –

0

做這個

File file = list[i]; 
String Folderfilename= file.getName() 
0

兩個發生在你的代碼:

名單[I] .getName();

如果(列表[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); 
    } 
} 
相關問題