wyświetlenie zawartości pliku

0

Witam,
mam do napisania prosty notatnik. Ponieważ są to moje początki w świecie Javy napotykam co chwile jakieś problemy. Często sobie jakoś z nimi radzę. Tym razem chyba jest to bardzo zakręcone albo jest tak proste, że szukam nie tam gdzie trzeba.

Otóż chciałbym, aby użytkownik mógł wybrać plik tekstowy, a później jego zawartość została wyświetlona. JFileChoosera już użyłem i wszystko mi się wyświetla, mogę zaznaczyć jakiś plik itd. Teraz jak zrobić aby ten wybrany plik, a raczej jego zawartość wyświetliła mi się w notatniku ??

1

Możesz to zrobić np. tak :

 File txt;
        txt = new File("xxx.txt");
        String dane = "";
        String daneOut = "";

        try {

            BufferedReader odczytaj = new BufferedReader(new FileReader(txt));

            while ((dane = odczytaj.readLine()) != null) {
                // tutaj dane które odczytasz zapisujesz gdzie chcesz
            }
        } catch (IOException e) {}
    }

zamiast podawać w file konkretny plik możesz użyć zastosowanego JFileChoser uslatając ścieżkę do wybranego pliku

open = fd.getSelectedFile().getPath();
gdzie fr - to JFileChoser

0
            Runtime r=Runtime.getRuntime();
            Process p=null;
            String[] cmd={"notepad.exe",fc.getSelectedFile().getAbsolutePath()};
            try
            {
                p=r.exec(cmd);
            }
            catch (Exception e)
            {
                System.out.println(e);
            }
0
remigio napisał(a)

Możesz to zrobić np. tak :


File txt;
txt = new File("xxx.txt");
String dane = "";
String daneOut = "";
    try {

        BufferedReader odczytaj = new BufferedReader(new FileReader(txt));

        while ((dane = odczytaj.readLine()) != null) {
            // tutaj dane które odczytasz zapisujesz gdzie chcesz
        }
    } catch (IOException e) {}
}

> 
> zamiast podawać w file konkretny plik możesz użyć zastosowanego JFileChoser uslatając ścieżkę do wybranego pliku 
> 
> open = fd.getSelectedFile().getPath(); 
> gdzie   fr - to JFileChoser

Ok :) Poszło i wszystko ładnie działa, tylko nie wiem jak przekierować wyświetlenie z konsoli na JTextArea, bo chyba tego trzeba użyć. Chwilowo po wybraniu pliku mam wynik na konsoli :)
1
            while ((dane = odczytaj.readLine()) != null) {
                ta.append(dane+"\n");
            }

ta, to JTextArea, readLine() czyta bez znaku nowego wiersza, stad konieczność +"\n".

0
bo napisał(a)

ta, to JTextArea, readLine() czyta bez znaku nowego wiersza, stad konieczność +"\n".

To znaczy że kiedy damy na końcu "\n" to wyświetli cały tekst (tzn. wszystkie wiersze notatnika)? Bo ja też próbowałem
wyświetlić plik w JTextArea() ale wyświetlał tylko ostatnią linijkę - czy trzeba napisać całą instrukcję ? Na konsoli wyświetla cały tekst.


                ta.append(dane+"\n");

... i proszę o objasnienie metody append() bo nie znam : )

0
bo napisał(a)
while ((dane = odczytaj.readLine()) != null) {
ta.append(dane+"\n");
}

ta, to JTextArea, readLine() czyta bez znaku nowego wiersza, stad konieczność +"\n".

Dziękuje, 'bo' działa :) Wszystko wydaje się proste jak już się to zrozumie. Mam nadzieję, że kiedyś będę mógł i ja pomóc :)

0
szypxx napisał(a)
bo napisał(a)

ta, to JTextArea, readLine() czyta bez znaku nowego wiersza, stad konieczność +"\n".

To znaczy że kiedy damy na końcu "\n" to wyświetli cały tekst (tzn. wszystkie wiersze notatnika)? Bo ja też próbowałem
wyświetlić plik w JTextArea() ale wyświetlał tylko ostatnią linijkę - czy trzeba napisać całą instrukcję ? Na konsoli wyświetla cały tekst.

            ta.append(dane+"\n");

> ... i proszę o objasnienie metody append() bo nie znam : )

append dokleja (dodaje) do końca pliku to co tam masz. Natomiast '\n' oznacza złamanie wiersza - znak nowej linii. Bez tego append by ci doklejało ale nie przechodziło do nowego wiersza po doklejeniu kolejnej linii i wszystko byś miał w jednym ciągu.

Oczywiście musisz przekazać do tej metody swoje JTextArea w konstruktorze :) Jak by co to ci pomogę, bo ja już się z tym uporałem.
0

No to już rozumiem.
Bo właśnie nie chciało mi się grzebać (sorki;) i szukać metody co umożliwia wyświetlanie kolejnych wierszy.
Dzięki za objaśnienie.

Mam jeszcze pytanie: skoro append() wyświetla na końcu to jaka metoda wyświetla na początku ?

Nie chcę znoobić ale czy append(args, false) ? // tak jakby logicznie rzecz biorąc

zdaje się że niektóre metody tak mają.

0

Jak chcesz dodać wiersz na początku, to

  ta.setText("Bardzo ważny, ale zapomniany wiersz \n"+ta.getText());      

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0