今天,学到的是java中的文件操作。
Java.IO.File
Java中操作文件用到RandomAccessFile类,既可以读取文件内容,也可以向文件输出数据,但不同与普通输入/输出流的是RandomAccessFile支持“随机访问”的方式,即程序可以跳转到文件的任意地方来读写数据。
局限:只能读写文件,不能读写其他IO节点
了解
(1)Java文件模型
在硬盘上是byte byte byte 储存的,是 数据的集合
(2)打开文件
两种常用模式“rw”读写方式 “r”读
(3)写方法
Raf.write(int a)
(4)读方法
(5)用完之后要关闭
演示例子:
package com.my_demo; import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays; public class RafDemo { public static void main(String[] args) throws IOException{
File demo = new File("demo"); // 创建一个文件
if(!demo.exists())//如果文件不存在,创建到绝对目录下 {
demo.mkdirs();//这是个父目录
}
File file = new File(demo, "dat.txt");
if(!file.exists()){
file.createNewFile();//在demo目录下创建了文件
} // RandomAccessFile raf = new RandomAccessFile(file, "rw");
RandomAccessFile raf = new RandomAccessFile("dat.txt", "rw");//读写方式
//看一下初始时的指针位置
System.out.println(raf.getFilePointer()); //往里写一个字节后看看指针的位置
raf.write('c'); //写了一个字节,它的后八位
//看一下此时的指针位置
System.out.println(raf.getFilePointer());
/**
* 用writechar()方法时会写入两个字节
*/
// raf.writeChar('c'); //写入一个int
int i = 0x7fffffff;//最大的整型
raf.write(i>>>24);//写进去高八位
raf.write(i>>>16);
raf.write(i>>>8);
raf.write(i); //Java底层的运行机制
//看一下此时的指针位置
System.out.println(raf.getFilePointer()); String s ="中";
byte[] gbk = s.getBytes("gbk");
raf.write(gbk);
System.out.println(raf.length()); //读文件,必须把指针移到头部
raf.seek(0);
//一次性读取,把文件中的内容都读写到字节数组中
byte[] buf = new byte[(int)raf.length()];
raf.read(buf); System.out.println(Arrays.toString(buf));
//最后必须关闭
raf.close();
} }
不足之处望指正,新手请多关照