<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FFile%2FRandomAccessFile</id>
		<title>Java Tutorial/File/RandomAccessFile - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FFile%2FRandomAccessFile"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/File/RandomAccessFile&amp;action=history"/>
		<updated>2026-04-22T09:23:51Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/File/RandomAccessFile&amp;diff=5282&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/File/RandomAccessFile&amp;diff=5282&amp;oldid=prev"/>
				<updated>2010-06-01T05:19:09Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:19, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/File/RandomAccessFile&amp;diff=5281&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/File/RandomAccessFile&amp;diff=5281&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Appending data to existing file ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.io.RandomAccessFile;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void append(String fileName, String text) throws Exception {&lt;br /&gt;
    File f = new File(fileName);&lt;br /&gt;
    long fileLength = f.length();&lt;br /&gt;
    RandomAccessFile raf = new RandomAccessFile(f, &amp;quot;rw&amp;quot;);&lt;br /&gt;
    raf.seek(fileLength);&lt;br /&gt;
    raf.writeBytes(text);&lt;br /&gt;
    raf.close();&lt;br /&gt;
  }&lt;br /&gt;
  public static void append(String fileName, byte[] bytes) throws Exception {&lt;br /&gt;
    File f = new File(fileName);&lt;br /&gt;
    long fileLength = f.length();&lt;br /&gt;
    RandomAccessFile raf = new RandomAccessFile(f, &amp;quot;rw&amp;quot;);&lt;br /&gt;
    raf.seek(fileLength);&lt;br /&gt;
    raf.write(bytes);&lt;br /&gt;
    raf.close();&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    append(&amp;quot;c:\\tmp.txt&amp;quot;, &amp;quot;Appended Data&amp;quot;);&lt;br /&gt;
    append(&amp;quot;c:\\tmp.bin&amp;quot;, &amp;quot;Appended Data&amp;quot;.getBytes());&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Employs RandomAccessFile to store ints and changes the value of the third int. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.RandomAccessFile;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    try {&lt;br /&gt;
      RandomAccessFile raf = new RandomAccessFile(&amp;quot;c:\\temp\\RAFsample.txt&amp;quot;, &amp;quot;rw&amp;quot;);&lt;br /&gt;
      raf.writeInt(10);&lt;br /&gt;
      raf.writeInt(43);&lt;br /&gt;
      raf.writeInt(88);&lt;br /&gt;
      raf.writeInt(455);&lt;br /&gt;
      // change the 3rd integer from 88 to 99&lt;br /&gt;
      raf.seek((3 - 1) * 4);&lt;br /&gt;
      raf.writeInt(99);&lt;br /&gt;
      raf.seek(0); // go to the first integer&lt;br /&gt;
      int i = raf.readInt();&lt;br /&gt;
      while (i != -1) {&lt;br /&gt;
        System.out.println(i);&lt;br /&gt;
        i = raf.readInt();&lt;br /&gt;
      }&lt;br /&gt;
      raf.close();&lt;br /&gt;
    } catch (IOException e) {&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Getting FileChannel from RandomAccessFile ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.FileOutputStream;&lt;br /&gt;
import java.io.RandomAccessFile;&lt;br /&gt;
import java.nio.ByteBuffer;&lt;br /&gt;
import java.nio.channels.FileChannel;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  private static final int BSIZE = 1024;&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    FileChannel fc = new RandomAccessFile(&amp;quot;data.txt&amp;quot;, &amp;quot;rw&amp;quot;).getChannel();&lt;br /&gt;
    fc.position(fc.size());&lt;br /&gt;
    fc.write(ByteBuffer.wrap(&amp;quot;Some more&amp;quot;.getBytes()));&lt;br /&gt;
    fc.close();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  RandomAccessFile Introduction ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;A RandomAccessFile employs an internal pointer that points to the next byte to read.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;This pointer is zero-based and the first byte is indicated by index 0.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;When first created, a RandomAccessFile points to the first byte.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;You can change the pointer&amp;quot;s position by invoking the seek method.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;The skipBytes method moves the pointer by the specified number of bytes.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;If skipping offset number of bytes would pass the end of file, the internal pointer will only move to as much as the end of file.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;The skipBytes method returns the actual number of bytes skipped.&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;When opening a file using a RandomAccessFile, you can choose whether to open it read-only or read write.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public RandomAccessFile (File file, String mode) throws FileNotFoundException&lt;br /&gt;
public RandomAccessFile (String filePath, String mode) throws FileNotFoundException&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Seek in RandomAccessFile ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.RandomAccessFile;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) throws IOException {&lt;br /&gt;
    RandomAccessFile raf = new RandomAccessFile(new File(&amp;quot;temp.tmp&amp;quot;), &amp;quot;rw&amp;quot;);&lt;br /&gt;
    raf.writeInt(1);&lt;br /&gt;
    for (int i = 0; i &amp;lt; 10; i++) {&lt;br /&gt;
      raf.seek(raf.length() - 4);&lt;br /&gt;
      raf.writeInt(raf.readInt());&lt;br /&gt;
    }&lt;br /&gt;
    raf.close();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Test file pointer manipulation between FileChannel and RandomAccessFile objects. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.RandomAccessFile;&lt;br /&gt;
import java.nio.channels.FileChannel;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] argv) throws IOException {&lt;br /&gt;
    RandomAccessFile randomAccessFile = new RandomAccessFile(&amp;quot;test.dat&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
    randomAccessFile.seek(1000);&lt;br /&gt;
    FileChannel fileChannel = randomAccessFile.getChannel();&lt;br /&gt;
    // This will print &amp;quot;1000&amp;quot;&lt;br /&gt;
    System.out.println(&amp;quot;file pos: &amp;quot; + fileChannel.position());&lt;br /&gt;
    randomAccessFile.seek(500);&lt;br /&gt;
    // This will print &amp;quot;500&amp;quot;&lt;br /&gt;
    System.out.println(&amp;quot;file pos: &amp;quot; + fileChannel.position());&lt;br /&gt;
    fileChannel.position(200);&lt;br /&gt;
    // This will print &amp;quot;200&amp;quot;&lt;br /&gt;
    System.out.println(&amp;quot;file pos: &amp;quot; + randomAccessFile.getFilePointer());&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Use RandomAccessFile to reverse a file ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.RandomAccessFile;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    RandomAccessFile raf = new RandomAccessFile(&amp;quot;a.dat&amp;quot;, &amp;quot;rw&amp;quot;);&lt;br /&gt;
    int x, y;&lt;br /&gt;
    for (long i = 0, j = raf.length() - 1; i &amp;lt; j; i++, j--) {&lt;br /&gt;
      raf.seek(i);&lt;br /&gt;
      x = raf.read();&lt;br /&gt;
      raf.seek(j);&lt;br /&gt;
      y = raf.read();&lt;br /&gt;
      raf.seek(j);&lt;br /&gt;
      raf.write(x);&lt;br /&gt;
      raf.seek(i);&lt;br /&gt;
      raf.write(y);&lt;br /&gt;
    }&lt;br /&gt;
    raf.close();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Use RandomAccessFile to save and read ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.RandomAccessFile;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) throws IOException {&lt;br /&gt;
    RandomAccessFile rf = new RandomAccessFile(&amp;quot;test.dat&amp;quot;, &amp;quot;rw&amp;quot;);&lt;br /&gt;
    for (int i = 0; i &amp;lt; 10; i++)&lt;br /&gt;
      rf.writeDouble(i * 1.414);&lt;br /&gt;
    rf.close();&lt;br /&gt;
    rf = new RandomAccessFile(&amp;quot;test.dat&amp;quot;, &amp;quot;rw&amp;quot;);&lt;br /&gt;
    rf.seek(5 * 8);&lt;br /&gt;
    rf.writeDouble(47.0001);&lt;br /&gt;
    rf.close();&lt;br /&gt;
    rf = new RandomAccessFile(&amp;quot;test.dat&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
    for (int i = 0; i &amp;lt; 10; i++)&lt;br /&gt;
      System.out.println(&amp;quot;Value &amp;quot; + i + &amp;quot;: &amp;quot; + rf.readDouble());&lt;br /&gt;
    rf.close();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Write int to RandomAccessFile using FileChannel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.RandomAccessFile;&lt;br /&gt;
import java.nio.IntBuffer;&lt;br /&gt;
import java.nio.channels.FileChannel;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) throws IOException {&lt;br /&gt;
    FileChannel fc = new RandomAccessFile(&amp;quot;temp.tmp&amp;quot;, &amp;quot;rw&amp;quot;).getChannel();&lt;br /&gt;
    IntBuffer ib = fc.map(FileChannel.MapMode.READ_WRITE, 0, fc.size()).asIntBuffer();&lt;br /&gt;
    for (int i = 0; i &amp;lt; 10; i++)&lt;br /&gt;
      ib.put(i);&lt;br /&gt;
    fc.close();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>