<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>files - Kama Kaczmarek</title>
	<atom:link href="https://kamakaczmarek.net/tag/files/feed/" rel="self" type="application/rss+xml" />
	<link>https://kamakaczmarek.net/tag/files/</link>
	<description>Strona z materiałami dla uczniów i nauczycieli</description>
	<lastBuildDate>Fri, 10 Apr 2026 07:45:32 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>22. JAVA &#8211; operacje na plikach i katalogach</title>
		<link>https://kamakaczmarek.net/22-java-operacje-na-plikach-i-katalogach/</link>
		
		<dc:creator><![CDATA[Kama]]></dc:creator>
		<pubDate>Wed, 13 Oct 2021 14:32:14 +0000</pubDate>
				<category><![CDATA[JAVA]]></category>
		<category><![CDATA[files]]></category>
		<category><![CDATA[java]]></category>
		<guid isPermaLink="false">https://kamakaczmarek.net/?p=3383</guid>

					<description><![CDATA[<p>Praca z plikami opiera się na strumieniach wejści/wyjścia.Z pomocą klas InputStream i OutputStream możemy odczytywać plik bajt po bajcie.Operacje na plikach mogą zwrócić IOException, musimy przechwycić błąd, a zamknięcie pliku okodować finally.Metody:&#8211; read &#8211; odczyt 1 bajtu, zwraca int, koniec pliku to wartość -1&#8211; write &#8211; zapisuje do pliku po 1 bajcie   Przykład: import [&#8230;]</p>
<p>Artykuł <a href="https://kamakaczmarek.net/22-java-operacje-na-plikach-i-katalogach/">22. JAVA &#8211; operacje na plikach i katalogach</a> pochodzi z serwisu <a href="https://kamakaczmarek.net">Kama Kaczmarek</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Praca z plikami opiera się na strumieniach wejści/wyjścia.<br />Z pomocą klas InputStream i OutputStream możemy odczytywać plik bajt po bajcie.<br />Operacje na plikach mogą zwrócić IOException, musimy przechwycić błąd, a zamknięcie pliku okodować finally.<br />Metody:<br />&#8211; read &#8211; odczyt 1 bajtu, zwraca int, koniec pliku to wartość -1<br />&#8211; write &#8211; zapisuje do pliku po 1 bajcie</p>
<p> </p>
<p>Przykład:</p>
<pre>import java.io.*;<br /><br />public class FilesExample{<br />    public static void main(String[] args) throws IOException {<br />        //ZAPIS DO PLIKU BAJTOWO<br />        char[] chars = {'T', 'e', 'k', 's', 't'};<br />        FileOutputStream out = null;<br />        //zabezpieczamy się przed błedem<br />        try {<br />            //uchwyt do pliku<br />            out = new FileOutputStream("src/all/part_10_Files/test.txt");//jeżeli plik nie istnieje to zostanie utworzony<br />            for (char c : chars) {<br />                out.write(c); //zapisujemy do pliku<br />            }<br />        } catch (IOException e) { //możemy też zapisać Exception<br />            e.printStackTrace();<br />        } finally {<br />            if (out != null) out.close();//zamykamy plik<br />        }<br /><br /><br />        //po skompilowaniu kodu w terminalu pojawił się nasz plik.<br />        //każde uruchomienie programu spowoduje nadpisanie zawartości pliku<br /><br />        //ZAPIS DO PLIKU ZNAKÓW UNICODE, CZYLI NP POLSKICH LITER, bajt po bajcie<br />        String tekst = "ąęćńźżłó";<br />        char[] charsfw = tekst.toCharArray();<br />        FileWriter fw = null;<br />        //zabezpieczamy się przed błedem<br />        try {<br />            //uchwyt do pliku<br />            fw = new FileWriter("src/all/part_10_Files/fw.txt");//jeżeli plik nie istnieje to zostanie utworzony<br />            for (char c : charsfw) {<br />                fw.write(c); //zapisujemy do pliku<br />            }<br />        } catch (IOException e) { //możemy też zapisać Exception<br />            e.printStackTrace();<br />        } finally {<br />            if (fw != null) fw.close();//zamykamy plik<br />        }<br /><br />        //ZAPIS DO PLIKU WIELU ZNAKÓW NA RAZ, bez zapisu Unicode czyli polskich znaków<br />        String tekst1 = "To jest tekst do zapisu.";<br />        char[] charsbos = tekst1.toCharArray();<br />        BufferedOutputStream bos = null;<br />        //zabezpieczamy się przed błedem<br />        try {<br />            //uchwyt do pliku<br />            bos = new BufferedOutputStream(new FileOutputStream("src/all/part_10_Files/bis.txt"));<br />            for (char c : charsbos) {<br />                bos.write(c); //zapisujemy do pliku<br />            }<br />        } catch (IOException e) { //możemy też zapisać Exception<br />            e.printStackTrace();<br />        } finally {<br />            if (bos != null) bos.close();//zamykamy plik<br />        }<br /><br />        //ZAPIS DO PLIKU WIELU ZNAKÓW NA RAZ, z zapisem Unicode czyli polskich znaków<br />        String tekst2 = "To jest tekst do zapisu.";<br />        BufferedWriter bw = null;<br />        //zabezpieczamy się przed błedem<br />        try {<br />            //uchwyt do pliku<br />            bw = new BufferedWriter(new FileWriter("src/all/part_10_Files/bw.txt"));<br />            for (int i = 0; i&lt;5; i++) {<br />                bw.write("Linijka " + i + ": " + tekst2 + "\n"); //zapisujemy do pliku<br />            }<br />        } catch (IOException e) { //możemy też zapisać Exception<br />            e.printStackTrace();<br />        } finally {<br />            if (bw != null) bw.close();//zamykamy plik<br />        }<br /><br />        //W celu zapisu danych innych niż tekstowe należy korzystać z wyspecjalizowanych klas<br />        //buforowanie do pliku binarnego<br />        DataOutputStream dos = null;<br />        //zabezpieczamy się przed błedem<br />        try {<br />            //uchwyt do pliku<br />            dos = new DataOutputStream(<br />                    new BufferedOutputStream(<br />                            new FileOutputStream("src/all/part_10_Files/dos.txt")));<br />           dos.writeUTF("Testowy strumień binarny");<br />           dos.writeShort(30000);<br />           dos.writeLong(12345678963214L);<br />           dos.writeFloat(55.36F);<br />           dos.writeDouble(25878.2548d);<br />           dos.writeByte(11);<br />           dos.writeChar('A');<br />           //zapisujemy<br />            dos.flush();<br />        } catch (IOException e) { //możemy też zapisać Exception<br />            e.printStackTrace();<br />        } finally {<br />            if (dos != null) dos.close();//zamykamy plik<br />        }<br /><br />//-------------------------------------------------------------------------------<br />        //ODCZYT PLIKU BAJT PO BAJCIE<br />        FileInputStream in = null;<br />        //zabezpieczamy się przed błedem<br />        try {<br />            //uchwyt do pliku<br />            in = new FileInputStream("src/all/part_10_Files/test.txt");<br />            int i = 0;<br />            while ((i = in.read()) != -1) {//-1 to koniec pliku<br />                System.out.print((char) i); //konwertujemy na char, bo inaczej będą tylko bajty<br />            }<br />        } catch (IOException e) { //możemy też zapisać Exception<br />            e.printStackTrace();<br />        } finally {<br />            if (in != null) in.close();//zamykamy plik<br />        }<br />        System.out.println("\n");<br /><br />        //ODCZYT PLIKU Z POLSKIMI ZNAKAMI, bajt po bajcie<br />        FileReader fr = null;<br />        //zabezpieczamy się przed błedem<br />        try {<br />            //uchwyt do pliku<br />            fr = new FileReader("src/all/part_10_Files/fw.txt");<br />            int i = 0;<br />            while ((i = fr.read()) != -1) {//-1 to koniec pliku<br />                System.out.print((char) i); //konwertujemy na char, bo inaczej będą tylko bajty<br />            }<br />        } catch (IOException e) { //możemy też zapisać Exception<br />            e.printStackTrace();<br />        } finally {<br />            if (fr != null) fr.close();//zamykamy plik<br />        }<br /><br />        //ODCZYT PLIKU wiele znaków, bez zapisu Unicode czyli polskich znaków<br />        BufferedInputStream bis = null;<br />        //zabezpieczamy się przed błedem<br />        try {<br />            //uchwyt do pliku<br />            bis = new BufferedInputStream(new FileInputStream("src/all/part_10_Files/bis.txt"));<br />            int i = 0;<br />            while ((i = bis.read()) != -1) {//-1 to koniec pliku<br />                System.out.print((char) i); //konwertujemy na char, bo inaczej będą tylko bajty<br />            }<br />        } catch (IOException e) { //możemy też zapisać Exception<br />            e.printStackTrace();<br />        } finally {<br />            if (bis != null) bis.close();//zamykamy plik<br />        }<br />        System.out.println("\n");<br /><br />        //ODCZYT PLIKU wiele znaków, z Unicode czyli polskimi znakami<br />        BufferedReader br = null;<br />        //zabezpieczamy się przed błedem<br />        try {<br />            //uchwyt do pliku<br />            br = new BufferedReader(new FileReader("src/all/part_10_Files/bw.txt"));<br />            String str = null;<br />            while ((str = br.readLine()) != null) {<br />                System.out.println(str);<br />            }<br />        } catch (IOException e) { //możemy też zapisać Exception<br />            e.printStackTrace();<br />        } finally {<br />            if (br != null) br.close();//zamykamy plik<br />        }<br /><br />        //W celu odczytu danych innych niż tekstowe należy korzystać z wyspecjalizowanych klas<br />        //!!!odczytujemy dane w takiej samej kolejności jak zapisywaliśmy!!!<br />        DataInputStream dis = null;<br />        //zabezpieczamy się przed błedem<br />        try {<br />            //uchwyt do pliku<br />            dis = new DataInputStream(<br />                    new BufferedInputStream(<br />                            new FileInputStream("src/all/part_10_Files/dos.txt")));<br /><br />            //odczytujemy po kolei tak jak było zapisane<br />            //dos.writeUTF("Testowy strumień binarny");<br />            String str1 = dis.readUTF();<br />            System.out.println(str1);<br />            //dos.writeShort(30000);<br />            short srt = dis.readShort();<br />            System.out.println(srt);<br />            //dos.writeLong(12345678963214L);<br />            /*long lng = dis.readLong();<br />            System.out.println(lng);*/<br />            //jeżeli chcielibyśmy pominąć odczyt któregoś z typów musimy przeskoczyć określoną ilość bajtów<br />            dis.skipBytes(8);<br />            //dos.writeFloat(55.36F);<br />            float flt = dis.readFloat();<br />            System.out.println(flt);<br />            //dos.writeDouble(25878.2548d);<br />            double dbl = dis.readDouble();<br />            System.out.println(dbl);<br />            //dos.writeByte(11);<br />            byte bt = dis.readByte();<br />            System.out.println(bt);<br />            //dos.writeChar('A');<br />            char ch = dis.readChar();<br />            System.out.println(ch);<br />        } catch (IOException e) { //możemy też zapisać Exception<br />            e.printStackTrace();<br />        } finally {<br />            if (dis != null) dis.close();//zamykamy plik<br />        }<br />        //---------------------------------------------------------------------<br />        //KOPIOWANIE PLIKU<br />        FileInputStream incp = null;<br />        FileOutputStream outcp = null;<br />        //zabezpieczamy się przed błedem<br />        try {<br />            //uchwyt do pliku<br />            incp = new FileInputStream("src/all/part_10_Files/test.txt");<br />            outcp = new FileOutputStream("src/all/part_10_Files/testcp.txt");<br />            int i = 0;<br />            while ((i = incp.read()) != -1) {//-1 to koniec pliku<br />                outcp.write(i);<br />            }<br />        } catch (IOException e) { //możemy też zapisać Exception<br />            e.printStackTrace();<br />        } finally {<br />            if (incp != null) incp.close();//zamykamy plik<br />            if (outcp != null) outcp.close();//zamykamy plik<br />        }<br /><br /><br />    }<br />}</pre>
<p> </p>
<h2>Klasa File</h2>
<p>za pomocą klasy File możemy operować na plikach i katalogach</p>
<pre>import java.io.File;<br />import java.io.IOException;<br />import java.util.Date;<br /><br /><br />public class FileClass {<br />    public static void main(String[] args) throws IOException {<br />        File file = new File("src/all/part_10_Files/klasafile.txt");<br />        //sprawdzamy czy plik istnieje<br />        if (!file.exists()){<br />            //tworzymy plik<br />            if (file.createNewFile()){<br />                System.out.println("Utworzono nowy plik.");<br />            } else {<br />                System.out.println("Wystąpił nieoczekiwany błąd.");<br />            }<br />        }<br />        System.out.println("Czy plik może być odczytany?: " + file.canRead());<br />        System.out.println("Czy plik może być zapisywany?: " + file.canWrite());<br />        System.out.println("Czy to katalog?: " + file.isDirectory());<br />        System.out.println("Czy to plik?: " + file.isFile());<br />        System.out.println("Jak się nazywa plik?: " + file.getName());<br />        System.out.println("Nadrzędny katalog: " + file.getParent());<br />        System.out.println("Ścieżka dostępu: " + file.getPath());<br />        System.out.println("Ścieżka dostępu absolutna: " + file.getAbsolutePath());<br />        System.out.println("Czy plik jest ukryty?: " + file.isHidden());<br />        System.out.println("Kiedy modyfikowany?: " + new Date(file.lastModified()));<br />        System.out.println("Ilość bajtów?: " + file.length());<br /><br />        //listujemy katalog<br />        File fl = new File("src/all/part_10_Files");<br />        if (fl.exists()){<br />            String[] files = fl.list();<br />            for (String f : files) {<br />                System.out.println(f);<br />            }<br />        } else {<br />            System.out.println("taki folder nie istnieje");<br />        }<br /><br />        //tworzymy katalog<br />        File dir = new File("src/all/part_10_Files/test_dir");<br />        if(!dir.exists()) {<br />            dir.mkdir();<br />            System.out.println("Utworzono katalog");<br />        } else{<br />            System.out.println("Katalog już istnieje");<br />        }<br /><br />    }<br />}</pre>
<p> </p>
<h2>Serializacja</h2>
<p>Serializacja pozwala na zapisanie/odczytanie obiektów</p>
<pre>import java.io.*;<br /><br />class CarObject implements Serializable{<br />    public String manufacturer;<br />    public String name;<br />    public int productionYear;<br />    public int topSpeed;<br />    public transient int id; //to pole nie będzie serializowane<br /><br />    public CarObject(String manufacturer, String name, int productionYear, int topSpeed, int id) {<br />        this.manufacturer = manufacturer;<br />        this.name = name;<br />        this.productionYear = productionYear;<br />        this.topSpeed = topSpeed;<br />        this.id = id;<br />    }<br /><br />    @Override<br />    public String toString() {<br />        return "CarObject{" +<br />                "manufacturer='" + manufacturer + '\'' +<br />                ", name='" + name + '\'' +<br />                ", productionYear=" + productionYear +<br />                ", topSpeed=" + topSpeed +<br />                ", id=" + id +<br />                '}';<br />    }<br />}<br /><br />public class SerializeExample {<br />    public static void main(String[] args) throws IOException {<br />        CarObject car1 = new CarObject("Ford", "Mustang", 1970,200,1);<br />        CarObject car2 = new CarObject("Dodge", "Charger", 1975,220,2);<br /><br />        //zapisujemy obiekt do pliku<br />        ObjectOutputStream out = new ObjectOutputStream(<br />                new BufferedOutputStream(<br />                        new FileOutputStream("src/all/part_10_Files/serialize.dat")<br />                ));<br />        out.writeObject(car1);<br />        out.writeObject(car2);<br />        out.flush(); //opróżniamy bufor<br />        out.close();<br /><br />        //odczytujemy obiekt<br />        ObjectInputStream in = new ObjectInputStream(<br />                new BufferedInputStream(<br />                        new FileInputStream("src/all/part_10_Files/serialize.dat")<br />                ));<br />        try {<br />            while (true){<br />                CarObject car = (CarObject) in.readObject();<br />                System.out.println(car);<br />            }<br />        } catch (EOFException e){<br />            //koniec pliku<br />        } catch (Exception e){<br />            e.printStackTrace();<br />        } finally {<br />            if (in!=null) in.close();<br />        }<br />    }<br />}</pre>
<p>Artykuł <a href="https://kamakaczmarek.net/22-java-operacje-na-plikach-i-katalogach/">22. JAVA &#8211; operacje na plikach i katalogach</a> pochodzi z serwisu <a href="https://kamakaczmarek.net">Kama Kaczmarek</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
