Příklad Java RandomAccessFile

Příklad Java RandomAccessFile

Úvod

RandomAccessFile je třída v Javě, která umožňuje přístup ke souboru pomocí ukazatele. Umožňuje čtení a zápis dat na libovolnou pozici v souboru, aniž by bylo nutné číst nebo zapisovat celý soubor. To je užitečné pro přístup k velkým souborům, kde je potřeba přistupovat pouze k určitým částem.

RandomAccessFile je vyhledávatelný stream, což znamená, že lze kdykoli přesunout ukazatel na libovolnou pozici v souboru. Umožňuje také čtení a zápis dat v libovolném formátu, např. bajty, krátké celá čísla, dlouhá celá čísla nebo řetězce.

Použití RandomAccessFile

Syntaxe pro vytvoření objektu RandomAccessFile je následující:

java
RandomAccessFile file = new RandomAccessFile("soubor.txt", "rw");

kde:

  Jak zveřejňovat delší videa na Instagramu

* file je název objektu RandomAccessFile
* soubor.txt je název souboru, který se má otevřít
* rw je režim přístupu, který umožňuje čtení i zápis

Jakmile je objekt vytvořen, můžete jej použít k provedení následujících operací:

Čtení dat

* int read() – Čte jediný bajt z aktuální pozice ukazatele
* byte[] read(byte[] b) – Čte bajty do pole b
* String readLine() – Čte řádek textu z aktuální pozice ukazatele
* long getFilePointer() – Vrací aktuální pozici ukazatele v souboru

Zápis dat

* void write(int b) – Zapisuje jediný bajt na aktuální pozici ukazatele
* void write(byte[] b) – Zapisuje bajty z pole b
* void writeLine(String s) – Zapisuje řádek textu na aktuální pozici ukazatele
* void seek(long pos) – Přesouvá ukazatel na zadanou pozici v souboru

Metody RandomAccessFile

RandomAccessFile poskytuje řadu metod pro manipulaci se souborem:

* void close() – Zavře soubor
* long length() – Vrací délku souboru
* void setLength(long newLength) – Nastaví délku souboru
* Channel getChannel() – Vrací kanál souboru
* FileChannel channel() – Vrací kanál souboru
* FileDescriptor getFD() – Vrací deskriptor souboru
* boolean readBoolean() – Čte booleovskou hodnotu
* byte readByte() – Čte byte
* char readChar() – Čte znak
* double readDouble() – Čte double
* float readFloat() – Čte float
* int readInt() – Čte int
* long readLong() – Čte long
* short readShort() – Čte short
* String readUTF() – Čte řetězec kódovaný UTF
* void writeBoolean(boolean v) – Zapisuje booleovskou hodnotu
* void writeByte(int v) – Zapisuje byte
* void writeChar(int v) – Zapisuje znak
* void writeDouble(double v) – Zapisuje double
* void writeFloat(float v) – Zapisuje float
* void writeInt(int v) – Zapisuje int
* void writeLong(long v) – Zapisuje long
* void writeShort(int v) – Zapisuje short
* void writeUTF(String str) – Zapisuje řetězec kódovaný UTF

  Jak zobrazit mapu ve SnapChatu

Závěr

RandomAccessFile je výkonný nástroj pro přístup ke souborům v Javě. Umožňuje čtení a zápis dat na libovolnou pozici v souboru, aniž by bylo nutné číst nebo zapisovat celý soubor. To je užitečné pro přístup k velkým souborům, kde je potřeba přistupovat pouze k určitým částem.

RandomAccessFile poskytuje řadu metod pro manipulaci se souborem, včetně metod pro čtení a zápis dat, pohyb ukazatele a získání informací o souboru. Je to všestranná a účinná třída pro práci se soubory v Javě.

Časté dotazy

1. K čemu se používá RandomAccessFile?

RandomAccessFile se používá pro přístup ke souborům v Javě pomocí ukazatele. Umožňuje čtení a zápis dat na libovolnou pozici v souboru, aniž by bylo nutné číst nebo zapisovat celý soubor.

  Jak vytvořit a aktualizovat tabulku obrázků v aplikaci Microsoft Word

2. Jak vytvořím objekt RandomAccessFile?

Objekt RandomAccessFile lze vytvořit pomocí následující syntaxe:

java
RandomAccessFile file = new RandomAccessFile("soubor.txt", "rw");

kde soubor.txt je název souboru, který se má otevřít, a rw je režim přístupu, který umožňuje čtení i zápis.

3. Jak čtu data z RandomAccessFile?

Data lze číst z RandomAccessFile pomocí metod read() a readLine(). Například, k načtení jednoho bajtu použijte:

java
int b = file.read();

4. Jak zapisuji data do RandomAccessFile?

Data lze zapisovat do RandomAccessFile pomocí metod write() a writeLine(). Například, k zapsání jednoho bajtu použijte:

java
file.write(b);

5. Jak přesunu ukazatel v RandomAccessFile na jinou pozici?

Ukazatel lze přesunout na jinou pozici v RandomAccessFile pomocí metody seek(). Například, k přesunutí ukazatele na pozici 100 použijte:

java
file.seek(100);

6. Jak zjistím délku souboru RandomAccessFile?

Délku souboru RandomAccessFile lze zjistit pomocí metody length().

java
long length = file.length();

7. Jak zavřu RandomAccessFile?

RandomAccessFile lze zavřít pomocí metody close().

java
file.close();

8. Jak získám kanál souboru RandomAccessFile?

Kanál souboru RandomAccessFile lze získat pomocí metody getChannel().

java
FileChannel channel = file.getChannel();

9. Proč bych měl používat RandomAccessFile místo FileInputStream nebo FileOutputStream?

RandomAccessFile se používá, když je třeba přistupovat ke souborům pomocí ukazatele. To je užitečné pro přístup k velkým souborům, kde je potřeba přistupovat pouze k určitým částem. FileInputStream a FileOutputStream jsou lepší volbou pro sekvenční přístup k souborům.

10. Je RandomAccessFile bezpečný pro vlákna?

RandomAccessFile není bezpečný pro vlákna. Pokud potřebujete sdílet objekt RandomAccessFile mezi více vlákny, použijte třídu java.nio.channels.FileLock k synchronizaci přístupu.