2010-11-17 26 views
3

Bu yüzden Java ile garip bir sorun yaşıyorum.Mutlak yol yerine göreceli yol nasıl kullanılır?

Bir yazı dosyası okuyorum, bu yüzden yol benim için önemli. Tüm dosyaların yazılmasını ve göreceli yoldan okunmasını isterim (yani, klasimin ve java dosyalarının geri kalanıyla klasörde).

Öyle gibi dosyaları yazma:

FileWriter fw = new FileWriter(outfile,true); 
fw.write(data); 
fw.close(); 

nerede ÇıkışDosyası 'out.txt' (biz çıktı gitmek istediğiniz dosyanın yani ismi) gibi bir şeydir.

Sorun, dosya, diğer dosyalarımın yolu yerine /home/me/ olarak oluşturulmuştur.

Yanlış bir şey yapıyorum? Ya da göreli dizinde saklanan dosyaları nasıl alabilirim?

+3

Bağıl * Neye *? –

+1

Zaman? http://en.wikipedia.org/wiki/Special_relativity –

+0

Belki göreceli yanlış terimdir. Çalışma dizinimde (yani dosyaların nerede yapıldığı, nerede yürütüldüğü vb.) Kastediyorum. – Blackbinary

cevap

4
FileWriter fw = new FileWriter("./" + outfile,true); 

veya

FileWriter fw = new FileWriter("~/" + outfile,true); 

Bunu denemek istiyorum.

+0

Bu benim için çalışıyor: FileWriter fw = yeni FileWriter ("./" + outfile, true); –

3

Java, dosyaları geçerli çalışma dizinine göre kaydedecektir. Programı çalıştırdığınızda ev dizininde misin?

Dosyaların her zaman, Java dosyalarının konumuna ve geçerli çalışma dizinine göre kaydedilmesini istiyorsanız, bu dizini bulmanız ve mutlak bir yol elde etmek için onu eklemeniz gerekir.

+0

Sanırım sorun buydu. Tüm dosyalarımı klasörle derledim (bu yüzden klasörün içinde bir adım yerine ev dizinimdeydim) ve paketi kullandım.Bunu çalıştırmak için AClass. Yani sanırım bu cevapları. Teşekkürler. – Blackbinary

0

komut satırında user.dir özelliğini ayarlayın, ya da sadece wnt herşey göreli olarak dizinden çalıştırmak size diyoruz yani programı çalıştırmak nerede

4

çalışma dizinidir (cd-ing ile) java YourClass, böylece yürütmekte olduğunuz sınıfa göre dosya yazmak istediğinizde, geçerli dizini bilmeniz ve oradan göreceli yolu eklemeniz gerekir.

Yani bir sınıf test.YourClass varsa ve yani kaynak kökünden uygulamayı çalıştırırsanız

java test.YourClass

Eğer sınıf dosyasından olduğunu dizininin tam yolu bulabilirsiniz user.dir sistem özelliğinin ve sınıfları paket adı şöyledir:

public class YourClass { 

public void printPath() { 
    String path = String.format("%s/%s", System.getProperty("user.dir"), this.getClass().getPackage().getName().replace(".", "/")); 
    System.out.println(path); 
} 

}

İlgili konular