我有下面的代碼來查找指定目錄中具有特定單詞的文件列表。如何從本地磁盤驅動器讀取文件,如D://或E://或C://
- isWordPresent(字,文件路徑)方法將給出字是否包含在所定義的路徑。
該代碼工作得很好,直到我們有一些本地驅動器內的文件夾。
如:字符串目錄名= 「d:// FOLDER1」
我不能這樣做,但是,與本地驅動器。下面的gace NullPointerException的所有組合在//代碼行C(如代碼段所示)。
- String directoryName= "*D://*" OR String Directorypath = "*D:/*"
- String directoryName= "*D:\\*" OR String directoryName= "*D:\*"
( 「d:\」 需要轉義字符,但是,我已經嘗試了所有組合)
重要的是,我試圖更換代碼線A到:
`File[] roots = File.listRoots(); //code line A
if(Arrays.asList(roots).toString().contains(directoryName)){ //code line B`
其中String directoryName =「C:\」並相應地關閉括號。
上述變化的工作,直到//代碼C線它顯示的NullPointerException
有沒有一種方法,我可以訪問d盤?的
`public void listFilesHavingTheWord(String directoryName,String word)
throws IOException{
File directory = new File(directoryName);
//get all the files from a directory
File[] fList = directory.listFiles(); //code line A
//code line B
for (File file : fList){ //code line C
if (file.isFile()){
String filepath=file.getAbsolutePath();
if(isWordPresent(word,filepath)){
int index=file.getName().lastIndexOf(".");
if (index > 0) {
String fileNameWithoutExt = file.getName().substring(0, index);
System.out.println("word \""+word+"\" present in file--> "+fileNameWithoutExt);
}
}
} else if (file.isDirectory()){
listFilesHavingTheWord(file.getAbsolutePath(),word);
}
}
}`
你有逃避的倒退。它是'「D:\\」'或'「D:/」' –
不,這個rpoblem不是那個@JimGarrison – shwetha
@shwetha:我用你的代碼與directoryName作爲「C://」。它顯示我C盤下的所有文件。你能否讓我更瞭解你的問題。 D://驅動器下有任何文件嗎? – Lathy