Soru Eclipse'de kullanmak istediğim bir textfile nerede?


Programımı başlattığımda bir metin dosyası okumalıyım. Tutulma kullanıyorum ve yeni bir java projesi başlattım. Benim proje klasöründe "src" klasörü ve standart "JRE Sistem Kütüphanesi" + staedteliste.txt var ... Metin dosyasını nereye koyacağımı bilmiyorum. Ben düşünebildiğim her klasörü gerçekten denedim .... Metin dosyası benim app ile dahil olması gerektiğinden "kodlanmış" bir yol kullanamıyorum.

Dosyayı okumak için aşağıdaki kodu kullanıyorum, ancak şu hatayı alıyorum:

Error:java.io.FileNotFoundException:staedteliste.txt(No such file or directory)

public class Test {

ArrayList<String[]> values;

public static void main(String[] args) {
    // TODO Auto-generated method stub

    URL url = Test.class.getClassLoader().getResource("src/mjb/staedteliste.txt");
    System.out.println(url.getPath()); // I get a nullpointerexception here!
    loadList();
}

public static void loadList() {
    BufferedReader reader;
    String zeile = null;

    try {
        reader = new BufferedReader(new FileReader("src/mjb/staedteliste.txt"));
        zeile = reader.readLine();          

        ArrayList<String[]> values = new ArrayList<String[]>();

        while (zeile != null) {             
            values.add(zeile.split(";"));
            zeile = reader.readLine();
        }
        System.out.println(values.size());
        System.out.println(zeile);

    } catch (IOException e) {
        System.err.println("Error :"+e);
    }
}

}


25
2018-05-17 16:04


Menşei


Uygulamanızı Eclipse'den başlatırken başlangıç ​​dizinini yapılandırabilirsiniz. Yanlışlıkla yanlış yapılandırılmadığından emin misin? new File(".").getAbsolutePath() gösterecek. - mihi


Cevaplar:


Kendiniz sorun: Dosyanız bir  uygulamanızın bileşeni? (Bu genellikle bir JAV veya web uygulaması ise SAVAŞINIZIN paketlenmiş olduğunu ima eder, genellikle, bir yapılandırma dosyası veya statik kaynak, salt okunur).

Cevap evet ise, bir kesin yol dosya için. Ama sen ona bir göreceli yol (örneğiniz olarak), çünkü Java bu yolun yoluna göre olduğunu varsayar.geçerli dizin". Genellikle bu senaryo için tercih edilen yol onu yüklemek sınıf yolundan nispeten.

Java size classLoader.getResource () Bunu yapmak için yöntem. Ve Eclipse (normal kurulumda) varsayar src/ sınıf yolunuzun kökünde olmak, böylece, derledikten sonra, her şeyi çıktı dizininize kopyalar ( bin/ ), java dosyaları derlenmiş haliyle ( .class ), geri kalanı olduğu gibi.

Örneğin, eğer dosyanızı yerleştirirseniz src/Files/myfile.txt, derleme zamanında kopyalanacak bin/Files/myfile.txt ; ve, çalışma zamanında bin/ sınıf yolunuzda (kökü) olacak. Yani, arayarak getResource("/Files/myfile.txt") (bazı değişkenlerinde) okuyabileceksiniz.

Düzenlenen: Ayrıca, dosyanız bir java sınıfına kavramsal olarak bağlıysa (ör. com.example.MyClass bir var MyClass.cfg ilişkili yapılandırma dosyası), kullanabilirsiniz sınıftan getResource () yöntemi ve (kaynak) göreceli bir yol kullanın: MyClass.getResource("MyClass.cfg"). Dosya daha sonra sınıf yolunda aranacak, ancak sınıf paketine önceden eklenecek. Böylece, bu senaryoda, genellikle MyClass.cfg ve MyClass.java aynı dizindeki dosyalar.


41
2018-05-17 16:57



klasör önemli değil, ben sadece bir klasör ile yapmaya çalıştım ne yapmak için hiçbir fikrim yoktu .. nasılsa, "Greg Adamski" nin kodunu denedim, ama işe yaramıyor .... - MJB
Greg'in kodu işe yaramalı. "Test", ana metodunuza sahip olan sınıf mı? (gerekli değil) Eclipse'de tam bir yapı yaptınız mı, dosyanız dosya / klasörünüze kopyalanıyor mu? - leonbloy
evet ... Biliyorum, en iyi uygulama değil, ama tahmin edebileceğiniz gibi bu sadece bir test ... projem "Test" denir ve benim de ana metodu tutan tek sınıfım ..... Yapamıyorum NPexception'ı aldığımdan ...: / NPeception-error'i aldığım satırı yorumlamam gerekirse, fileNotFoundException'ı tekrar alırım ... ama evet .. filenotfound-exc'ı aldığımda, dosya kopyalanır "bin" klasörü. - MJB
“Bunu yapamam çünkü NPexception'ı elde ediyorum” ... erhmmm ... İlk önce (proje -> tümünü inşa et), yani derleyin; sonra koşarsın. NPE, inşatan sonra, çalışma sırasında gelmelidir. - leonbloy
Evet, üzgünüm, aynı zamanda inşa ediyorum ve çalışıyorum ... .txt / bin ... - MJB


Almak için tek yol

  1. Birlikte çalıştığınız dosyayı sınıf yoluna ekleyin
  2. Dosyayı bulmak için kaynak yükleyiciyi kullanın:

        URL url = Test.class.getClassLoader().getResource("myfile.txt");
        System.out.println(url.getPath());
        ...
    
  3. Aç onu

9
2018-05-17 16:12



public static void main (String [] args) {URL URL'si = Test.class.getClassLoader (). getResource ("staedteliste.txt"); System.out.println (url.getPath ()); } S.o.p hattına ulaştığımda bir NullPointerException alıyorum. "Src / klasörüne ve projemin köküne" Test / .. "yazdım. - MJB
Dosyanızın eclipse'deki src dizininizin altında gösterildiğinden emin olmanız gerekir. Eğer onu sadece kaşifin kullanarak kopyaladıysanız, ortaya çıkması için projeyi yenilemeniz gerekir. - Greg Adamski
Eclipse'deki Paket Gezgini'nde, "Test" adlı projemi aldım. Ben "Test" genişlediğimde "src", "JRE SystemLibrary" ve "staedteliste.txt" (bu sırayla) görüyorum. Sadece yenilemeye başladım ve kodu tekrar çalıştırdım, ama hala NPExc .. - MJB
staedteliste.txt, yanında değil, src altında olmalıdır. - Greg Adamski
altında demek istediğin için! Ancak, her klasöre tam anlamıyla giriyorum ... işe yaramadı ...: / - MJB


Eclipse'de "TestProject" adlı bir projeniz olduğunu ve çalışma alanı klasörünüzün E: / eclipse / workspace adresinde bulunduğunu varsayalım. Bir Eclipse projesi oluşturduğunuzda, sınıf yolunuz o zaman e:/eclipse/workspace/TestProject. "Staedteliste.txt" dosyasını okumaya çalıştığınızda, dosyaya şu adresten erişmeye çalışıyorsunuz e:/eclipse/workspace/TestProject/staedteliste.txt.

Projeniz için ayrı bir klasöre sahip olmak istiyorsanız TestProject altındaki Dosyalar klasörünü oluşturun ve ardından dosyaya (ilgili yol) erişin. /Files/staedteliste.txt. Dosyayı src klasörünün altına koyarsanız, şununla erişmeniz gerekir. /src/staedteliste.txt. Src klasörünün içindeki bir Dosyalar klasörü /src/Files/staedteliste.txt

Göreli yolu kullanmak yerine mutlak olanı ekleyerek kullanabilirsiniz. e:/eclipse/workspace/ başlangıçta, ancak göreceli yolu kullanmak daha iyidir çünkü proje klasör yapısı aynı olduğu sürece projeyi refactoring konusunda endişe etmeden hareket ettirebilirsiniz.


2
2018-05-17 17:31



çalışmıyor Şimdi bir NullPointerException alıyorum. Dosyayı düşünebildiğim her yere koydum ve yolu değiştirdim, hiçbir şey ... - MJB


Sadece bir klasör oluştur Files altında src ve dosyayı buraya koy. Bu gibi görünecek src/Files/myFile.txt

Not:  Kodunuzda bunun gibi belirtmeniz gerekir Files/myFile.txt Örneğin.

getResource("Files/myFile.txt");

Böylece projenizi oluşturduğunuzda ve .jar dosyasını çalıştırdığınızda bu çalışabilmelidir.


2
2018-01-20 08:05



Klasör adı küçük harfle mi olmalı? - Taoufik Jabbari
Benim için çalışmaz, Mark'ın işaret ettiği gibi ana proje dizinine dosya koymak zorunda kaldım. - Line


Java sınıf paketinizin adına bağlı olarak, muhtemelen dizin yapısının 4 veya 5 düzeyinde olursunuz.

Java sınıf paketiniz örneğin, com.stackoverflow.project ise, sınıfınız src / com / stackoverflow / projesinde bulunur.

Birden çok dizin yapısını yukarı taşıyabilirsiniz ../veya metin dosyasını sınıfınızla aynı pakete taşıyabilirsiniz. Metin dosyasını taşımak daha kolay olurdu.


0
2018-05-17 16:10



benim paket adı "mjb" yani "src / mjb / staedteliste.txt" kullanmıştım. Her klasöre .txt dosyası koyduğumda bile bir nullpointerexception alıyorum. - MJB


Muhtemelen ClassLoader sınıfındaki getResource'un çeşitli tatlarına bir göz atmalısınız: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html


0
2018-05-17 16:14



Evet teşekkür ederim - MJB


MJB

Lütfen bunu dene

  1. Kullanmak istediğiniz metin dosyasında tutulma "Sağ tıklama", HDD’de saklanan tam yolu görmek ve kopyalamak (UNIX’te "/home/sjaisawal/Space-11.4-template/provisioning/devenv/Test/src/testpath/testfile.txt" gibi)

  2. bu yolu tamamlayın ve deneyin.

  3. eğer çalışırsa o zaman sınıf yolu sorunu GOK :)


0
2018-01-19 10:06





Bu basit bir proje ise, txt dosyasını doğrudan proje klasörüne sürükleyebilmeniz gerekir. Özellikle, "proje klasörü" en yüksek düzeyli klasör olacaktır. Bunu txt dosyasını src klasörüne yerleştirerek yapmaya çalıştım (yaptığım bir ödev projesi için) ama işe yaramadı. Ama sonunda proje dosyasına koymaya karar verdim.

Bunun için iyi bir öğretici http://www.vogella.com/articles/JavaIO/article.html. Bunu i / o için bir giriş olarak kullandım ve yardımcı oldu.


0
2018-01-27 18:52





Şuna bir bak video

Yapmanız gereken her şey, dosyanızı seçmek (txt dosyasının aynı basit formunu varsayarak), daha sonra Eclipse'deki projeye sürükleyip orada bırakın. Daha esnek olduğu için Bağlantı yerine Kopyala'yı seçin. İşte bu - Sadece denedim.


0
2018-06-21 18:48