Java文件操作:RandomAccessFile
2015-04-28 19:05
459 查看
Java提供了一个可以对文件随机访问的操作,访问包括读和写操作。该类名为RandomAccessFile.
1.RandomAccessFile的两种访问模式:
2.写操作
3.读操作
4.将一个字符串写入文件
5.使用TestRandomAccessFileDemo实现文件复制
6.获取游标位置以及对基本类型进行写操作的方法
1.RandomAccessFile的两种访问模式:
import java.io.File; import java.io.FileNotFoundException; import java.io.RandomAccessFile; /** * 创建RandomAccessFile * 两种模式:只读,读写 * * @author Administrator * */ public class TestRandomAccessFileDemo { public static void main(String[] args) throws FileNotFoundException { // /* // * 读取demo.txt // * 第二个参数为访问模式:"r"表示只读 // */ // RandomAccessFile raf = // new RandomAccessFile("demo.txt", "r"); // File file = new File("demo.txt"); // raf = new RandomAccessFile(file, "r"); /* * 创建读写 * FileNotFoundException * 该异常会在创建RandomAccessFile时抛出 * 情况有两种: * 1.当我们设置为只读模式时,若指定的文件夹不存在,则会抛出 * 2.读写模式时,当我们写入数据时,若该文件不存在,则会自动创建该文件,若创建不成功则会抛出异常 * */ RandomAccessFile raf = new RandomAccessFile("raf.dat", "r"); } }
2.写操作
import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; /** * 向文件中写出数据 * @author Administrator * */ public class TestRandomAccessFileDemo2 { public static void main(String[] args) throws InterruptedException, IOException { //创建基于raf.dat文件读写的RandomAccessFile RandomAccessFile raf = new RandomAccessFile("raf.dat", "rw"); /* * void write(int d) * 向文件中写入给定int值的额“低8位” * int取值在0-255之间有意义 * * 8位二进制是一个字节 * 32位就是4个字节 */ int d = 255; raf.write(d); raf.write(2); //操作完毕要关闭释放资源 raf.close(); } }
3.读操作
import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; /** * 读取文件内容 * @author Administrator * */ public class TestRandomAccessFileDemo3 { public static void main(String[] args) throws IOException { RandomAccessFile raf = new RandomAccessFile("raf.dat", "r"); /* * int read() * 从文件中读取一个字节(8位二进制)并以int形式返回 * 这个int值只以低8位奏效,0-255之间 * * 若返回的int值为-1,则说明EOF(end of file)达到文件末尾了 */ int d = raf.read(); System.out.println(d); d = raf.read(); System.out.println(d); d = raf.read(); System.out.println(d); raf.close(); } }
4.将一个字符串写入文件
import java.io.IOException; import java.io.RandomAccessFile; import java.util.Scanner; /** * 将一个字符串写入文件 * @author Administrator * */ public class TestRandomAccessFileDemo4 { public static void main(String[] args) throws IOException { /* * 将字符串写入文件 * * 问题: * 1.如何将字符串转换为字节 * 2.如何将一组字节写出 * */ RandomAccessFile raf = new RandomAccessFile("raf2.txt", "rw"); String str = "!!!大家好!才是真的好!"; // //将字符串按照系统默认的编码集转换为对应的字节 // //byte[] arr = str.getBytes(); // /* // * 将字符串按照给定的编码集转换为对应的字符串 // * 编码集的名字不区分大小写 // */ byte[] arr = str.getBytes(); // //System.out.println(arr.length); // raf.write(arr); raf.read(); /* * 编写一个程序 * 从控制台输入内容,将这些内容写入文件中 * 类似记事本的功能 * 1.创建Scanner获取用户输入 * 2.通过Scanner读取一行字符串 * 3.创建一个RandomAccessFile用于创建写文件 * 4.将字符串转换为字节 * 5.通过RandomAccessFile将字节写入文件 * 6.关闭RandomAccessFile * 7.关闭Scanner */ Scanner scanner = new Scanner(System.in); System.out.println("请输入内容:"); String strInput = scanner.nextLine(); scanner.close(); byte[] arrInput = strInput.getBytes(); raf.write(arrInput); raf.read(arrInput); raf.close(); System.out.println("您书写的内容已存入"); } }
5.使用TestRandomAccessFileDemo实现文件复制
import java.io.IOException; import java.io.RandomAccessFile; /** * 使用TestRandomAccessFileDemo实现文件复制 * @author Administrator * */ public class TestRandomAccessFileDemo5 { public static void main(String[] args) throws IOException{ /* * 复制文件:先从源文件读取字节再将这些字节写入另一个文件中 * * 1.创建一个RandomAccessFile用于读取源文件 * 2.再创建一个RandomAccessFile用于写复制后的文件 * 3.循环读取源文件中的所有字节 * 4.将每个字节写入复制后的文件中 * 5.将两个RandomAccessFile关闭 */ RandomAccessFile raf = new RandomAccessFile("test.zip", "r"); RandomAccessFile rafCopy = new RandomAccessFile("testCopy.zip", "rw"); long start = System.currentTimeMillis(); int d = -1; while((d=raf.read())!=-1 ){ rafCopy.write(d); } long end = System.currentTimeMillis(); System.out.println("共运行:"+(end-start)/1000+"秒"); } }
6.获取游标位置以及对基本类型进行写操作的方法
import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; /** * 获取游标位置以及对基本类型进行写操作的方法 * @author Administrator * */ public class TestRandomAccessFileDemo6 { public static void main(String[] args) throws IOException { RandomAccessFile raf = new RandomAccessFile("data.dat", "rw"); System.out.println(raf.getFilePointer());//0 raf.write('a');//写一个字节 System.out.println(raf.getFilePointer());//1 //将int的最大值写入文件 raf.writeInt(Integer.MAX_VALUE); System.out.println(raf.getFilePointer());//5 //连续写了8个字节 raf.writeDouble(3.1415926); System.out.println(raf.getFilePointer());//13 /* * RandomAccessFile提供了一个写字符串的方法 * 使用utf-8编码将字符串转换为字节后写出 * void writeUTF(String str) * writeUTF方法每次会多写两个字节,用于记录当前字符串长度 */ String str = "你好!"; raf.writeUTF(str); System.out.println(raf.getFilePointer());//22 String str1 = "切克闹"; raf.writeUTF(str1); System.out.println(raf.getFilePointer());//33 raf.close(); } }
相关文章推荐
- Java文件操作---RandomAccessFile随机读写文件操作
- JAVA文件操作——RandomAccessFile 的用法
- java22.IO操作------RandomAccessFile随机文件读写
- Java IO操作——简单了解RandomAccessFile随机读写文件操作类的使用
- Java IO 之 RandomAccessFile 操作文件内容
- Java RandomAccessFile文件操作详解
- java-文件操作RandomAccessFile
- Java 文件操作 File 及 RandomAccessFile
- Java使用RandomAccessFile读写字节文件
- 文件操作——RandomAccessFile
- java中RandomAccessFile随机文件读写,文件追加和部分读取
- Java RandomAccessFile 随机写入文件
- Java笔记(四)随机存取文件流RandomAccessFile
- RandomAccessFile创建文件java.io.FileNotFoundException
- Java使用RandomAccessFile读写文件
- IO操作-随机读取文件RandomAccessFile
- java 管道流PipedInputStream,PipedInputStream和随机访问文件 RandomAccessFile
- 第八天 如何用RandomAccessFile操作进行文件copy?
- SE02 Unit01 文件操作——File 、 文件操作—— RandomAccessFile
- Java IO深入理解读写文件(FileInputStream、FileOutputStream、FileReader、FileWriter、RandomAccessFile)