Inne działy

Java przykładowe programy

 

Zapis do pliku tekstowego w Java

 

Pisanie do pliku jest trochę łatwiejsze niż odczyt z pliku. Aby zapisać do pliku, użyjemy dwóch wbudowanych klas: FileWriter i PrintWriter.

Stwórzmy nową klasę w projekcie utworzonym w poprzedniej lekcji , klikając na File > New File z menu NetBeans. Wybierz Java w sekcji Categories w oknie dialogowym i Java Class z listy File Types. Kliknij na przycisk Next. W polu Class Name nadajmy klasie nazwę ZapiszPlik , a następnie kliknij przycisk Finish. Dodaj następujące trzy instrukcje importu w nowej klasie:

import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;

Twoja nowa klasa powinna wyglądać jak poniżej:

 

package plikitekstowe;

import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;

public class ZapiszPlik {
    
}

Ponownie, są podkreślenia, ponieważ instrukcje nie były jeszcze używane.

Podczas zapisu do pliku, możesz zacząć od początku i zastąpić wszystko. Albo możesz zacząć na końcu i dołączyć dane na końcu pliku. Klasa FileWriter pozwala określić, którą opcje zastosujemy. Dodamy pole, które określa wartość dołączania do klasy FileWriter. Dodamy również pole, aby ustawić nazwę pliku.

Dodaj następujące dwa pola do kodu, oraz konstruktor:

 

public class ZapiszPlik {
    
    private String sciezka;
    private boolean dodaj_do_pliku = false;
    
    public ZapiszPlik(String plik_sciezka){
        sciezka = plik_sciezka;
    }
}

 

 

Pole logiczna nazywa się dodaj_do_pliku zostało ustawione na wartość false . To jest wartość domyślna dla klasy zapisu do pliku, a to oznacza, że nie chcesz, aby dołączyć treść, ale usunąć wszystko w pliku.

Konstruktor ustawia wartość dla polasciezka  (zmiennej instancji), które zawiera nazwę i lokalizację pliku. Te dane będą przekazane, gdy utworzymy nowy obiekt z naszej klasy ZapiszPlik.

Jak wspomniano w poprzedniej części, jednak można skonfigurować więcej niż jeden konstruktor w kodzie. Możemy ustawić drugi i przekazać wartość do niego z drugiego pola. Dzięki temu, użytkownik może po prostu użyć pierwszego konstruktora i przekazać nazwę pliku lub nazwę pliku i wartość dołączenia. Należy dodać następujący konstruktor poniżej pierwszego:

public ZapiszPlik(String plik_sciezka, boolean dodaj_wartosc){

        sciezka = plik_sciezka;

        dodaj_do_pliku = dodaj_wartosc;

    }

Ten drugi konstruktor ma teraz dwie wartości w nawiasach okrągłych, ścieżkę pliku i wartości dopisywania. Jeśli chcesz dołączyć wartości do pliku można użyć tego konstruktora przy tworzeniu nowego obiektu. Jeśli po prostu chcesz zastąpić plik tekstowy, a można użyć pierwszego konstruktora.

Okno kodu powinno wyglądać jak poniżej:

 

package plikitekstowe;

import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;

public class ZapiszPlik {
    
    private String sciezka;
    private boolean dodaj_do_pliku = false;
    
    public ZapiszPlik(String plik_sciezka){
        sciezka = plik_sciezka;
    }
    
    public ZapiszPlik(String plik_sciezka, boolean dodaj_wartosc){
        sciezka = plik_sciezka;
        dodaj_do_pliku = dodaj_wartosc;
    }
}

Aby zapisać plik, dodaj następującą metodę poniżej swoich dwóch konstruktorów:

public void zapiszDoPliku(String tekstLinia) throws IOException {

}

Metoda ta nie wymaga, aby zwrócić wartość, więc użyliśmy instrukcji void. W nawiasach okrągłych po nazwie metody mamy zmienną String o nazwie tekstLinia. To jest oczywiście tekst, który chcemy zapisać do pliku. Ponownie, musimy dodać instrukcję "throws IOException", aby obsłużyć błędy podczas zapisu do plików.

Pierwszą rzeczą, którą musimy w tej metody napisać jest utworzenie obiektu FileWriter. FileWriter dba o otwieranie prawidłowo pliku i przechowywać tekst jako bajty. Dodaj następujący wiersz do metody zapiszDoPliku:

 

FileWriter napisz = new FileWriter(sciezka, dodaj_do_pliku);

Tworzymy nowy obiekt FileWriter o nazwie napisz. W nawiasach okrągłch obiektu FileWriter umieszczamy nazwę i lokalizację pliku, plus wartość dołączenia. To będzie albo true (dołączyć do pliku) lub false (nie dołączyć). Jeśli plik o podanej nazwie nie istnieje, FileWriter tworzy plik dla Ciebie.

FileWriter zapisuje jednak bajty. Ale możemy dodać zwykły tekst do FileWriter za pomocą klasy PrintWriter. PrintWriter ma kilka przydatnych metod drukowania. Ale potrzebuje nazwę obiektu FileWrite, podczas tworzenia obiektu z klasy. Dodać poniższą linię do swojej metody:

PrintWriter drukuj_linie = new PrintWriter(napisz);

Nasz obiekt PrintWriter nazywa się drukuj_linie. W między nawiasy okrągłe z PrintWriter dodaliśmy nazwę naszego obiektu zapisu do pliku.

Aby dodać tekst do pliku, wpisz nazwę obiektu PrintWriter a następnie kropkę:

drukuj_linie.

Jak tylko wpiszesz kropkę, NetBeans wyświetli listę dostępnych opcji:

 

 

Istnieje całe mnóstwo opcji drukowania na liście!

Użyjemy jednej z metod printf. W ten sposób można przekazać sformatowany ciąg tekstu do PrintWriter. Dobrym powodem, dla zastosowania instrukcji printf jest obsługa znaków nowego wiersza. Obsługa nowego wiersza różni się, w zależności od używanego systemu operacyjnego. W Windows należy dodawać znaki \r \n dla nowej linii.Ale w systemie Unix wystarczy użyć \n. Korzystanie z funkcji printf zapewni odpowiednie kodowanie, bez względu na platformę.

Dodaj następujący wiersz kodu:

print_line.printf( "%s" + "%n" , textLine);

We've handed the printf method two things: a format for the text, and the string we want to write to the file. The two are separated by a comma. Notice the first of the two:

Metoda printf posiada dwa argumenty: formatowanie tekstu i ciąg, który chcemy zapisać do pliku. Dwa argumenty są oddzielone przecinkami. Zauważ,  że pierwszy z nich:

"%s" + "%n"

%s w cudzysłowach oznacza ciąg znaków o dowolnej długości. %n oznacza znak nowej linii. Więc mówimy metodzie printfaby sformatowała ciąg znaków i dodała na znak nowej linii na końcu. Rzeczywisty tekst, który wymaga formatowania znajduję się po przecinku. Metoda printf jest bardzo przydatna, a my ją bardziej szczegółowo omówimy w dalszej części.

Dodaj poniższy wiersz kod do metody:

drukuj_linie.close();

Linia ta zamyka plik tekstowy i zwalnia wszelkie zasoby jakie były używane.

Klasa ZapiszPlik powinna teraz wyglądać tak:

 

package plikitekstowe;

import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;

public class ZapiszPlik {
    
    private String sciezka;
    private boolean dodaj_do_pliku = false;
    
    public ZapiszPlik(String plik_sciezka){
        sciezka = plik_sciezka;
    }
    
    public ZapiszPlik(String plik_sciezka, boolean dodaj_wartosc){
        sciezka = plik_sciezka;
        dodaj_do_pliku = dodaj_wartosc;
    }
    
    public void zapiszDoPliku(String tekstLinia) throws IOException {
        FileWriter napisz = new FileWriter(sciezka, dodaj_do_pliku);
        PrintWriter drukuj_linie = new PrintWriter(napisz);
        
        drukuj_linie.printf("%s" + "%n", tekstLinia);
        drukuj_linie.close();
    }
    
}

Aby przetestować swoją nową klasę, powróć do swojej klasy PlikiTektsowe (z metodą main).Dodaj następujący wiersz, aby utworzyć nowy obiekt z klasy WriteFile:

ZapiszPlik dane = new ZapiszPlik(nazwa_pliku,true);

Utworzyliśmy obiekt ZapiszPlik o nazwie dane. W nawiasach okrągłych obiektu ZapiszPlik, dodaliśmy dwie rzeczy: nazwę pliku, i wartość dołącz z parametrem true. Zapewni to, że drugi z konstruktorów zostanie wywołany. Jeśli chcemy po prostu zastąpić plik, kod będzie wyglądał jak poniżej:

ZapiszPlik dane = new ZapiszPlik(nazwa_pliku);

Ponieważ możemy ustawić domyślną wartość dołączania jako false, musimy podać tylko nazwę pliku, jeżeli chcemy, aby zastąpić całą zawartość.

Aby wywołać metodę zapiszDoPliku obiektu ZapiszPlik, dodaj następującą linię:

dane.zapiszDoPliku("To jest nowa linia w pliku tekstowym");

Zapraszam do zmiany tekstu w nawiasach okrągłych metody.

Aby użytkownik wiedział, że coś się stało, można wydrukować informacje w oknie Output:

System.out.println("Tekst zapisany do pliku");

Kod klasy PlikiTekstowe powinien wyglądać jak poniżej:

 

package plikitekstowe;

import java.io.IOException;


public class PlikiTekstowe {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IOException {
        
        String nazwa_pliku = "c:/test.txt";
        
        try {
            CzytajPlik plik = new CzytajPlik(nazwa_pliku);
            String[] wierszTablicy = plik.OtworzPlik();
            
            int i;
            for(i=0; i < wierszTablicy.length;i++){
                System.out.println(wierszTablicy[i]);
            }
        } catch (IOException e) {
            System.out.println("Nie odnaleziono pliku");
        }
        
        //Zapis do pliku
        ZapiszPlik dane = new ZapiszPlik(nazwa_pliku,true);
        dane.zapiszDoPliku("To jest nowa linia w pliku tekstowym");
        
        System.out.println("Tekst zapisany do pliku");
    }        
}

Jeśli chcesz, dodać kolejny blok try ... catch do części kodu odpowiedzialnego za zapis do pliku, zmień go na następujący:

 

//Zapis do pliku
        try {
            ZapiszPlik dane = new ZapiszPlik(nazwa_pliku,true);
            dane.zapiszDoPliku("To jest nowa linia w pliku tekstowym"); 
	 System.out.println("Tekst zapisany do pliku");
        } catch(IOException e){
            System.out.println(e.getMessage());
        }  

Teraz uruchom swój kod, aby przetestować go. Powinieneś zobaczyć zawartość pliku tekstowego w oknie Output a następnie komunikat, że plik tekstowy został zapisany:

 

run:
To jest linia pierwsza
To jest linia druga
To jest linia trzecia
To jest linia czwarta
Tekst zapisany do pliku
BUILD SUCCESSFUL (total time: 0 seconds)

Uruchom program ponownie i powinieneś zobaczyć, że pojawi się nowa linia.

 

run:
To jest linia pierwsza
To jest linia druga
To jest linia trzecia
To jest linia czwarta
To jest nowa linia w pliku tekstowym
Tekst zapisany do pliku
BUILD SUCCESSFUL (total time: 0 seconds)

I to jest to - można teraz zapisać do pliku tekstowego i przeczytać jego zawartość. W następnej części, będziemy uczyć się programowania formularzy Java.

 

Zobacz nasze wszystkie kursy

WWW


HTML
HTML - Znaczniki
CSS - Tutorial
CSS - Selektory
PHP
JavaScript

XML

XSLT

Bazy danych


SQL
SQLite
MySQL
PostgreSQL

 

 

Programowanie


C
C++
C#
Java
VisualBasic
Python

Linux


Podstawy Linuxa
Bash
Linuks artykuły

Windows


Excel funkcje
Windows wskazówki
Outlook

Pozotałe działy


Programy
Rozrywka

 

 

 

This email address is being protected from spambots. You need JavaScript enabled to view it.