2010-03-15 22 views
6

Linux bir Directory için yanlış döndürür: Ben dizin yolunun doğru olduğunu ve doğruladıktanJava File.isDirectory() kod parçacığını bakınız

File[] additionalFiles = new File(FILE_PATH).listFiles(); 
boolean isDirectory = file.isDirectory(); 

Windows'un, değerine kodu çalıştırdığınızda isDirectory (olması gerektiği gibi) doğrudur. Bunun Linux'ta (RedHat Enterprise Linux) neden oluştuğuna dair herhangi bir öneriniz var mı?

+0

Dizinde normal bir dizin mi yoksa bir sembolik bağlantı mı var? Java'nın hangi sürümü? RH'nin hangi versiyonu? Dizin adında sıra dışı (İngilizce olmayan) karakterler içeriyor mu? – Yishai

+1

'FILE_PATH' değeri nedir? Herhangi bir şans ile Windows tarzı dosya ayırıcıları ('\') içerir mi? –

+0

Bunun bir simlink olduğuna inanıyorum, dizin paylaşılan bir sunucuda çıktı - bu nasıl bir etki yaratıyor? Java sürümü 6 güncellemesi 17'dir. RH sürümü Enterprise RedHat 5'dir. Dizin tüm küçük harfleri, özel karakterleri içermez ve dosya ayırıcıları doğrudur (programı çalıştırırken dizini yazdırdım, sonra kopyaladım ve yapıştırdım. komut satırında "cd" den sonra ve başarıyla ve dizine cd'd). – shelt536

cevap

6

Symlinks doğru bir şekilde hatırlarsam dizinleri okumuyor. O etrafında doğru yolu:

new File(FILE_PATH).getCanonicalFile().isDirectory(); 

(NOT: denenmemiş, kolayca bu konuda test etmek için bir linux kutusu yok).

5

Bu sorunu bir kez yaşadım. Benim durumum çok komik, bir özellik dosyasındaki yolu okuyordum ve bu yol dizenin sonunda bir sekme karakteri içeriyordu. Yolun bir dizin olarak tanınmamasının nedeni budur

+0

Sen ve ben ikimiz de :) – bjornl

İlgili konular