簡體   English   中英

我如何引用Java中的目錄?

[英]How do I refer to a directory in Java?

我正在運行Windows而我正在嘗試引用一個目錄。 我的功能就像這樣開始:

File file = new File("C:\\somedir\\report");
if (!file.exists()) {
  file.mkdirs();
}
doStuffWith(file);

我得到了內一個NullPointerException doStuffWith功能,當我試圖打電話給listFiles 好吧,我查看了C:\\ somedir,我發現了什么 - 有一個名為“report”的文件,沒有擴展名,還有一個名為“report”的目錄! 似乎發生的是file對象是指報告文件而不是目錄 如何確保我指的是目錄而不是文件?

我認為有一個isDirectory()方法會告訴你它是否是一個目錄

- 編輯

這就是我這么早起床的原因。 我在本地運行你的代碼,它對我來說很好。 能夠創建新文件,讀取目錄內容等。您還想做什么?

一種方法是將對應於“C:\\ somedir”的文件對象傳遞給方法和方法內部,執行listFiles()並遍歷內容,每次檢查文件名,如果是“報告” “,做一個isDirectory()。 返回true時繼續進行實際處理。

我不明白這個問題對我來說很好:

public class MkDir {
    static void doStuff(File dir) {
        if ( dir.isDirectory() ) {
            File[] listFiles = dir.listFiles();
            for ( File f : listFiles ) {
                System.out.println( f.getName() );
            }
        }
    }

    public static void main(String[] args) {
        File file = new File( "C:\\dev\\rep2\\rep" );
        if ( !file.exists() ) {
            file.mkdirs();
        }
        doStuff( file );
    }
}

檢查您的文件系統是否已啟用區分大小寫( HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\kernel\\ dword:ObCaseInsensitive注冊表中的HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\kernel\\ dword:ObCaseInsensitive )。

如果是這樣,您可能會因案件相關問題而受到傷害。 一種檢查方法:

String someName = "./nameNotUsedYet";
boolean first = new File(someName).mkdirs();
boolean second = new File(someName.toUpperCase()).mkdirs();
System.out.println("first = " + first + ", second = " + second);

如果兩個mkdirs()調用都成功,則表示您有與案例相關的並發症。 如果是這樣,請確保您完全正確地獲得"C:\\somedir\\report"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM