2010-03-23 21 views

cevap

10

üzerinde üreten kendi InputStream'nu uygulayabilirsiniz. Bu mümkün değildir. (Java API'sında FileInputStream'den değil). FileInputStream yapıcı herhangi bir alanda bu bilgileri saklamaz: soyutlama ve kapsülleme:

public FileInputStream(File file) throws FileNotFoundException { 
    String name = (file != null ? file.getPath() : null); 
    SecurityManager security = System.getSecurityManager(); 
    if (security != null) { 
     security.checkRead(name); 
    } 
     if (name == null) { 
      throw new NullPointerException(); 
     } 
    fd = new FileDescriptor(); 
    open(name); 
    } 
9

InputStream bir dosya veya yol olmadığından dolayı yapamazsınız. Verileri

0

iki önemli Nesneye Dayalı Tasarım ilkeleri ne istediğini yapıyor engelleyebilir.

  • Özet belirli bir bağlamda kullanımı (daha ayrıntılı bilgi here) için gerekli olan tek detaylara sahip genel bir fikir tanımlama işlemidir. Bu durumda, bu soyutlama, baytlarının kaynağı ne olursa olsun, bayt sağlayabilen genel bir arabirim olan InputStream'dur. Bir InputStream'un soyutlanmasının bir dosya yolu kavramı yoktur; Bu sadece InputStream'un belirli uygulamaları ile ilgilidir.
  • Kapsülleme, bir sınıfın uygulama ayrıntılarını o sınıftaki kullanıcılardan/kullanıcılardan gizleme işlemidir. Bu özel durumda, FileInputStream, okunan dosyanın ayrıntılarını içerir, çünkü InputStream bilgisiyle bu kullanımla ilgili değildir. path örnek alanı, enkapsüle edilmiş ve sınıfın kullanıcıları tarafından kullanılamaz.

bazı önemli sınırlamalar kabul etmeye istekli olup olmadığını o path değişkene erişme mümkündür, Having. Temel olarak, InputStream'un FileInputStream örneğinin olup olmadığını kontrol edebilir ve eğer öyleyse, path örnek alanını okumak için yansımayı kullanın. java.lang.Class Java belgelerinde ve çevrimiçi ortamda kolayca keşfedilebildiğinden ve çoğu bağlamda gerçekten iyi bir şey yapamayacağından bu erişimin ayrıntılarını dışarıda bırakacağım. Soru, neden hakkında bir bağlam sağladığından, daha makul yaklaşımlar sunmak zordur.

İlgili konular