2011-08-29 8 views

cevap

5

JDK 7 java.nio.file.Files sınıf dosyaları üzerinde çalışan statik yöntemler sağlar bir sınıftır.

Files.size(String path) yöntem java.nio.file.spi.FileSystemProvider gelen dosya boyutunu döndürür. File.length() ile ilgisi yoktur, çünkü gerçekte "bağlı" olan gerçek dosya boyutunu döndürür.

17

Ana fark, Files.size()'un "normal dosyalar" (Files.isRegularFile() tarafından tanımlandığı şekilde) olmayan şeyleri işleyebilmesidir.

Bu

hangi FileSystemProviders Ulaşabildiğiniz bağlı olarak, ... bir ZIP dosyası içinde bir dosyanın boyutunu, FTP/SFTP yoluyla erişilen dosyaları işlemek mümkün olabilir elde edebilmek anlamına gelir

Sade eski File.length() bunlardan hiçbirini yapamaz. It sadece "gerçek" dosyalarını işleme (yani altta yatan OS yanı dosyaları olarak işleme olanlar).

1

önemli bir fark şey yanlış giderse File.length() çünkü ben bu nedenle Files.size() kullanarak öneriyoruz 0. döndürür iken Files.size(), bir IOException atar şudur: Boş bir dosya ve bir hata ayırt etmek mümkün değildir

  • File.length() ile meydana geldiği için her iki durumda da 0'a dönecektir.
  • bir hata File.length() ile hatanın nedeni hakkında herhangi bir bilgi almazsınız oluşursa. Files.size() hatanın nedenini belirten bir mesaj içermektedir genellikle edecek dan aksine, IOException atılmış. this answer anlatıldığı gibi File.length() sadece işletim sistemi tarafından açığa "normal" dosya sistemi ile çalışırken

ek olarak, Files.size() (örneğin Posta kodu veya FTP dosya sistemleri için) herhangi bir dosya sistemi sağlayıcısı ile çalışabilir.

Sonuç: Genel olarak, eski File sınıfı üzerinde yeni Files sınıfından yöntemleri tercih ederim.