IO流

InputStram和OutputStream 输入字节流和输出字节流

在Java中,InputStream代表输入字节流OuputStream代表输出字节流,这是最基本的两种IO流。
int read():会读取输入流的下一个字节,并返回字节表示的int值,如果已经读到末尾,返回-1表示不能在进行读写了
FileInputStream:从文件流中读取数据,是InputStream的一个子类。

public void readFile()throws IOException{
	//创建一个FileInputStream对象
	InputStream input=new FileInputStream("src/test.txt");
	for(;;){
	int n=input.read();//反复调用read()方法,直到返回-1
	if(n==-1){break}
	}System.out.println(n);
}input.close();//关闭流
}
实际编码的时候要加上try语句,让编译器自动为我们关闭资源。

缓冲:在读取流的时候,一次读取一个字节并不是最高效的方法。很多流支持一次性读取多个字节到缓冲区,对于文件和网络流来说,利用缓冲区一次性读取多个字节效率往往要高很多。InputStream提供了两个重载方法来支持读取多个字节。
int read(byte[] b);读取若干个字节并填充到byte[]数组,返回读取的字节数。
int read(byte[] b,int off,int len);指定byte[]的数组最大偏移量和最大填充数。
利用上述方法一次读取多个字节时,需要先定义一个byte[]数组作为缓冲区,read()方法会尽可能多地读取字节到缓冲区, 但不会超过缓冲区的大小。read()方法的返回值不再是字节的int值,而是返回实际读取了多少个字节。如果返回-1,表示没有更多的数据了。

public void readFile()throws IOException{
	try(InputStream input=new FileInputStream("src/test.txt"))
	//定义缓冲区
	byte[] buffer=new byte[1000];
	int n;
	while (n=input.read(buffer) !=-1){//将数据读到缓冲区
	System.out.println("read"+n+"bytes");
}
}

OutputStream:最基本的输出流,也是一个抽象类。定义了一个最重要的方法void write(int b)
void write(int b):会写入一个字节到输出流。(其实是写入内存区,等内存区数据满了之后在发送到网络)
flush();将缓冲区的内容真正输出到目的地。
FileOutputStream:文件输出流。

public void writeFile()throws IOException{
	try(OutputStream output =new FileOutputStream("out/ream.tex")){
	output.write("Hello".getBytes(UTF-8));
}
}

Reader/Writer

Reader:输入字符流
Writer:输出字符流
Reader和Writer本质上是一个能自动编解码的InputStream和OutputStream


File对象

Java.io提供了File对象来操作文件和目录。
要构造一个File对象,需要传来文件路径

File f=new File("c:\\ window\\xx.exe");

在window平台使用\作为路径分隔符,在Java字符串中需要用**\表示一个**。
File对象既可以表示文件,也可以表示目录。
构造一个File对象,即使传入的文件或目录不存在,代码也不会出错,因为构造一个File对象,并不会导致任何磁盘操作。只有当我们调用File对象的某些方法的时候,才真正进行磁盘操作
调用isFile(),判断该File对象是否是一个已经存在的文件,调用isDiretory(),判断该File对象是否是一个已经存在的目录。返回Boolean值。

创建和删除文件

createNewFile():创建一个新的文件。
delete():删除该文件

File file=new File();
file.createNewFile(); //创建文件
file.delete;  //删除文件

遍历文件和目录

当File对象表示一个目录的时候,可以使用**list()listFiles()**来列出目录下的文件和子目录。**listFiles()**提供了一系列重载方法,可以过滤不需要的文件和目录。
mkdir():创建当前File对象表示的目录
delete():删除当前File对象表示的目录,当前目录必须为空才能删除成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值