Java I/O学习笔记

File类

是java.io包下代表操作与平台无关的文件和目录的类,一个File类的对象可以代表一个文件或目录,可用于获取与文件相关的信息

public File (String 文件路径);
//例:
File file = new File("C:\\test.tst");

!!! 注:创建File类对象时,必须设置文件路径

File类的常用方法

 IO流

*通过流读写文件*

IO流是指一连串流动的字符,以先进先出的方式发送信息的通道

I:input(读入操作)

O:output(写入操作)

流的分类

按流向分           输出流:只能写数据,不能读数据,实现程序从数据源中读取数据
                         输入流:只能读数据,不能写数据,实现程序向目标数据源中写数据
按处理单元分    字节流:以8位字节为操作数据单元的流
                          字符流:以16位字符为操作数据单元的流
按流的角色分    节点流:可以直接向一个特定的存储介质(如磁盘、文件)读写数据的流
                          处理流:用于对一个已存在的流进行连接和封装,通过封装后的流来实现数据读                              写操作的流

注:输入流主要由InputStream和Reader作为基类

字节输出流的基类:Outputstream

是抽象类,必须使用该类的子类进行实例化对象

常用方法

 字节输出流FileOutputStream类

使用Outputstream类的FileOutputstream子类向文本文件写入数据

常用构造方法

创建文件输出流对象的常用方式

//方法一
File file = new File("D:\\mydoc\\test.txt");
OutputStream fos = new FileOutputStream(file);
//方法二
OutputStream fos=new FileOutputStream("D:\\doc\\test.txt");
//方法三
OutputStream fos=new FileOutputStream("D:\\doc\\test.txt",true);
字节输入流的基类:InputStream

从文件中读数据,与OutputStream一样,也是抽象类

常用方法

 字节输入流FileInputStream类

使用InputStream类的FileInputStream子类向文本文件读取数据

常用构造方法

创建文件输入流对象的常用方式

//方法一
File file = new File("D:\\doc\\text.txt");
InputStream fis = new FileInputStream(file);
//方法二
InputStream fis = new FileInputStream("D:\\doc\\test.txt");

字符流基类

字符输出类:Writer(抽象类)

常用方法

 

字符输入类:Reader(抽象类)

常用方法

 字符输入流FileReader类

这是Reader类的子类,从"D:/doc/1.txt"中读取数据,显示到控制台

实现步骤

1.导入相关的类

import java.io.FileReader;
import java.io.Reader;
import java.io.FileNotFoundException;
import java.io.IOEception;

2.创建FileReader对象

fr =new FileReader("路径");

3.循环使用read()方法读取文件中的数据

While(len=fr.read(ch)>0){
    System.out.println(new String(ch,0,len));
}

4.关闭流

fr.close()

缓冲流

Java缓冲流自身并不具有·IO功能,只是在别的流上增加缓冲,以提高程序性能

分类:字节缓冲流

       :字符缓冲流

1.BufferedWrite类

是Writer类的子类,带有缓冲区

默认情况下,只有缓冲区满的时候,才会把缓冲区的数据真正写道目的地,那减少物流写数据的次数,提高输入/输出操作的执行效率

2.BufferedReader类

Reader类的子类

带有缓冲区,提高文件读取的效率

把一批数据读取到缓冲区

从缓冲区内获取数据

文件流是一个可以直接向一个特定的存储介质(如磁盘,文件等)读写数据的流

使用节点流进行读写数据操作时,程序直接连接到数据源,而处理流是一个对已存在的流进行连接和封装,通过封装后的流实现数据读写操作的流,使用处理流进行读写操作时,程序并不会直接连接到实际的数据源

序列化

对象输出流(ObjectOutputStream):实现序列化

对象输入流(ObjectIbputStream):实现反序列化

使用对象输出流实现序列化

//创建可序列化的类,要求实现Serializable接口
public class Person implements Serializable{
	private static final long seralVersionUID = 1L;
	//...
}
//创建对象输出流(ObjectOutputStream)
ObjectOutputStream oos = null;
//省略异常处理代码
oos = new ObjectOutputStream(
	new FileOutputStream("路径")
);
Person person = new Person("对象属性");
oos.writeObject(person);
if(oos != null){
	oos.close();
}

限制序列化

使用transient

import java.io.Serializable;
public class Person implements Serializable{
	private String name;
	private transient int age;//被限制序列化
	private String sex;
	public void print(){
		System.out.println("姓名:"+this.name",年龄:"+this.age",性别:"+this.sex+"。")
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值