Java基础知识强化之IO流笔记63:随机访问流RandomAccessFile

1. 随机访问流RandomAccessFile

RandomAccessFile类不属于流,是Object类的子类。但它融合了InputStream和OutputStream的功能。支持对随机访问文件的读取和写入。

RandomAccessFile的构造方法:

构造方法摘要
RandomAccessFile(File file, String mode)
          创建从中读取和向其中写入(可选)的随机访问文件流,该文件由 File 参数指定。
RandomAccessFile(String name, String mode)

创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称。

2.  代码示例:

 1 package cn.itcast_05;
 2
 3 import java.io.IOException;
 4 import java.io.RandomAccessFile;
 5
 6 /*
 7  * public RandomAccessFile(String name,String mode):第一个参数是文件路径,第二个参数是操作文件的模式。
 8  *         模式有四种,我们最常用的一种叫"rw",这种方式表示我既可以写数据,也可以读取数据
 9  */
10 public class RandomAccessFileDemo {
11     public static void main(String[] args) throws IOException {
12         // write();
13         read();
14     }
15
16     private static void read() throws IOException {
17         // 创建随机访问流对象
18         RandomAccessFile raf = new RandomAccessFile("raf.txt", "rw");
19
20         int i = raf.readInt();
21         System.out.println(i);
22         // 该文件指针可以通过 getFilePointer方法读取,并通过 seek 方法设置。
23         System.out.println("当前文件的指针位置是:" + raf.getFilePointer());
24
25         char ch = raf.readChar();
26         System.out.println(ch);
27         System.out.println("当前文件的指针位置是:" + raf.getFilePointer());
28
29         String s = raf.readUTF();
30         System.out.println(s);
31         System.out.println("当前文件的指针位置是:" + raf.getFilePointer());
32
33         // 我不想重头开始了,我就要读取a,怎么办呢?通过seek定位方法可以实现随机访问的功能
34         raf.seek(4);
35         ch = raf.readChar();
36         System.out.println(ch);
37     }
38
39     private static void write() throws IOException {
40         // 创建随机访问流对象
41         RandomAccessFile raf = new RandomAccessFile("raf.txt", "rw");
42
43         // 怎么玩呢?
44         raf.writeInt(100);
45         raf.writeChar(‘a‘);
46         raf.writeUTF("中国");
47
48         raf.close();
49     }
50 }

运行效果,如下:

时间: 2024-10-14 13:05:38

Java基础知识强化之IO流笔记63:随机访问流RandomAccessFile的相关文章

Java基础知识强化之IO流笔记65:序列化流 和 反序列化流

1. 什么是 序列化 和 反序列化 ?     序列化 (Serialization):将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象.一般的格式是与平台无关的二进制流,可以将这种二进制流持久保存在磁盘上,也可以通过网络将这种二进制流传输到另一个网络结点.  反序列化(Anti Serialization ):是指把这种二进制流数据还原成对象. 2. 序列化流 和 反序列化

Java基础知识强化之IO流笔记17:FileOutputStream构造方法使用

1. 可以参照之前写的笔记:   Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流) 2. FileOutputStream(常用的)构造方法: FileOutputStream(File file)           Constructs a new FileOutputStream on the File file. FileOutputStream(String filename)           Constructs a new FileO

Java基础知识强化之IO流笔记35:InputStreamReader/OutputStreamWriter 复制文本文件案例01

1. 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中. 数据源:  a.txt -- 读取数据 -- 字符转换流 -- InputStreamReader 目的地:  b.txt -- 写出数据 -- 字符转换流 -- OutputStreamWriter InputStreamReader/OutputStreamWriter不仅是转换流(将字节流转换为字符流),也是字符流Reader/Writer的具体实现子类. 2.代码示例: 1 package cn.itcas

Java基础知识强化之IO流笔记39:字符流缓冲流之特殊功能

1. 字符缓冲流的特殊方法 BufferedWriter: 1 public void newLine():根据系统来决定换行符 BufferedReader: 1 public String readLine():一次读取一行数据 包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null 2. 代码示例: 1 package cn.itcast_05; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedW

Java基础知识强化之IO流笔记28:BufferedOutputStream / BufferedInputStream(字节缓冲区流) 之BufferedOutputStream写出数据

1. BufferedOutputStream / BufferedInputStream(字节缓冲区流)的概述 通过定义数组的方式确实比以前一次读取一个字节的方式快很多,所以,看来有一个缓冲区还是非常好的.既然是这样的话,那么,java开始在设计的时候,它也考虑到了这个问题,就专门提供了带缓冲区的字节类.这种类被称为:缓冲区类(高效类) 写数据:BufferedOutputStream 读数据:BufferedInputStream 构造方法可以指定缓冲区的大小,但是我们一般用不上,因为默认缓

Java基础知识强化之IO流笔记18:FileOutputStream写入数据

1. 创建字节输出流对象,做了几件事情: (1)调用系统功能去创建文件(2)创建fos对象(3)把fos对象指向这个文件 2. 代码示例: 1 package com.himi.fileoutputstream; 2 3 import java.io.File; 4 import java.io.FileNotFoundException; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 8 /* 9 * 创建

Java基础知识强化之IO流笔记16:IO流的概述和分类

1. IO流的分类   流向:     (1)输入流:读取数据到内存     (2)输出流:写入数据到硬盘(磁盘)   操作的数据类型:    (1)字节流:操作的数据是字节                            输入流                            输出流        (2)字符流:操作的数据是字符,为了方便操作文本数据,Java就提供了字符流.                            输入流                      

Java基础知识强化之IO流笔记37:字符流缓冲流之BufferedWriter / BufferedReader使用

1. 字符流缓冲流: 字符流为了高效读写,也提供了对应的字符缓冲流. BufferedWriter:字符缓冲输出流 BufferedReader:字符缓冲输入流 2. BufferedWriter使用:     将文本写入字符输出流,缓冲各个字符,从而提供单个字符.数组和字符串的高效写入.可以指定缓冲区的大小,或者接受默认的大小.在大多数情况下,默认值就足够大了. (1)BufferedWriter的构造方法: 构造方法摘要 BufferedWriter(Writer out)         

Java基础知识强化之IO流笔记62:三种方式实现键盘录入

1. 三种方式实现键盘录入     System.in 标准输入流.是从键盘获取数据的 键盘录入数据三种方式:  A:main方法的args接收参数.  java HelloWorld hello world java  B:Scanner(JDK5以后的)  Scanner sc = new Scanner(System.in);  String s = sc.nextLine();  int x = sc.nextInt()  C:通过字符缓冲流包装标准输入流实现  BufferedRead