我編寫了一個小程序,它從命令提示符接收目錄的路徑並打印放置在此目錄中的所有文件和目錄。但它只適用於Windows。我有這樣的事情:在Linux和Windows中的java.io.File和路徑
path = args[0];
File dir = new File(path);
System.out.println(dir.listFiles());
啓動的窗口(正常工作):
java MyProg C:\mydir
啓動在Linux上:
java MyProg /home/user/mydir
,而不是文件,我得到這個列表以及:
[Ljava.io.File;@190690e
我在做什麼錯以及我的跨平臺?
UPD:是的,這是我的打印陣列的錯誤。但是: 爲什麼它對不同的目錄有不同的作用?隨着第一DIR PROGRAMM正常工作,與第二我nullptr
[email protected]:~$ java FileSearch /home/maxim/Downloads/archives/
[email protected]:~$ java FileSearch /home/maxim/Install/
Exception in thread "main" java.lang.NullPointerException
at FileSearch.saveFilesInList(FileSearch.java:21)
at FileSearch.saveFilesInList(FileSearch.java:25)
at FileSearch.saveFilesInList(FileSearch.java:25)
at FileSearch.saveFilesInList(FileSearch.java:25)
at FileSearch.saveFilesInList(FileSearch.java:25)
at FileSearch.saveFilesInList(FileSearch.java:25)
at FileSearch.saveFilesInList(FileSearch.java:25)
at FileSearch.saveFilesInList(FileSearch.java:25)
at FileSearch.main(FileSearch.java:88)
這裏是我的功能:
private static void saveFilesInList(String path, ArrayList<String> files)
throws IOException
{
File dir = new File(path);
File[] list = dir.listFiles();
[21] for (File f : list) {
if (f.isFile()) {
if (isUnic(f.getName(), files)) files.add(f.getName());
} else {
[25] saveFilesInList(f.getCanonicalPath(), files);
}
}
}
兩個迪爾斯有子目錄
UPD2:我發現這個問題。當目錄爲空時,listFiles()返回null。
你認爲應該打印什麼?爲什麼? –
它在Windows中打印什麼? – wumpz
哇)舒爾......它是陣列。這是正確的工作。當我將File dir傳入我的函數時,我的第一個麻煩實際上是NullPointerException。 dir!= null,但無論如何,我都有異常: File [] list = dir.listFiles(); (文件f:列表){ ... – Alendorff