Zaten sınıf yolundaysa, disk dosya sistemi yerine sınıf yolundan alın. Göreceli yollarla oynamayın java.io.File
. Java kodunun içinden üzerinde hiçbir kontrolünüz olmayan mevcut çalışma dizinine bağlıdırlar.
Bunun sınıfınızla ListStopWords.txt
aynı pakette olduğunu varsayarsak, FileLoader
şunları yapın:
URL url = getClass().getResource("ListStopWords.txt");
File file = new File(url.getPath());
Veya nihayetinde peşinde olduğunuz tek şey aslında InputStream
bunun bir parçasıysa:
InputStream input = getClass().getResourceAsStream("ListStopWords.txt");
Bu kesinlikle bir disk dosya sistemi yolunu temsil etmeyebileceği new File()
için url
, bir disk dosya sistemi yolunu temsil etmeyebilir, ancak sanal dosya sistemi yolunu da temsil edebilir (JAR, disk dosya sistemindeki geçici bir klasör yerine belleğe genişletildiğinde gerçekleşebilir) hatta her ikisi de File
yapıcı tarafından tanım başına sindirilemeyen bir ağ yolu .
Dosya, paket adı ipucu olarak, aslında sadece "yanlış" uzantıya sahip tam değerli bir özellikler dosyasıysa ( key=value
satırları içeren ), o zaman yöntemi InputStream
hemen besleyebilirsiniz load()
.
Properties properties = new Properties();
properties.load(getClass().getResourceAsStream("ListStopWords.txt"));
Not: içinden erişime onu çalışırken static
bağlamda, daha sonra kullanmak FileLoader.class
(ya da her türlü YourClass.class
yerine) getClass()
örneklerde yukarıda.
properties.files
için2
?