Java基础部分五

(一)流概述
1.流是一组有序的数据序列,根据操作的类型,可分为输入流和输出流两种。
2.虽然I/O流通常与磁盘文件存取有关,但是程序的源和目的地也可以是键盘、鼠标、内存、或显示器窗口等。

(二)输入/输出流
Java语言定义了许多类专门负责各种方式的输入/输出,这些类都被放在java.io包中。其中所有输入类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类;而所有输出类都是抽象类OutputStream(字节输出流)或抽象类Writer(字节输出流)的子类

1.输入流
InputStream方法:

方法作用
read()从输入流中读取数据的下一个字节。返回0~255范围内的int字节值。如果因为已经到达流末尾而没有可用的字节,则返回值为-1
read(byte[] b)从输入流中读入一定长度的字节,并以整数形式返回字节数
mark(int readlimit)在输入流的当前位置放置一个标记,readlimit参数告知此输入流在标记位置失效前允许读取的字节数
reset()将输入指针返回到当前所做的标记处
skip(long n)跳过输入流上的n个字节并返回实际跳过的字节数
markSupported()如果当前流支持mark()/reset()操作就返回true
close()关闭此输入流并释放与该输流关联的所有系统资源

2.输出流OutputStream方法:

方法说明
write(int b)将指定字节写入此输出流
write(byte[] b)将b个字节从指定的byte数组写入此输出流
write(byte[] b,int off,int len)将指定byte数组中从偏移量off开始的len字节写入此输出流
flush()彻底完成输出并清空缓存区
close()关闭输出流

(三)File类
File类是java.io包中唯一代表磁盘文件本身的对象
1.文件的创建与删除
创建文件对象构造方法1:

new File(String pathname)

其中,pathname指路径名称(包含文件名称),如:

File file=new File("D:/1.txt")

创建文件对象构造方法2:

new File(String parent,String child)

其中,parent:父路径字符串,如:D:/或D:/doc;child:子路径字符串。如:letter.txt
例:
在这里插入图片描述
运行结果:
在这里插入图片描述
3.获取文件信息
File类方法:

方法说明
getName()获取文件的名称
canRead()判断文件是否可读
canWrite()
exites()
length()获取文件的长度
getAbsolutePath()获取文件文件的绝对路径
getParent()获取文件的父路径
isFile()
isDirectory()
isHidden()
lastModified获取文件最后修改时间

例:
在这里插入图片描述
运行结果:
在这里插入图片描述

(四)文件输入/输出流
1.FileInputStream与FileOutputStream类
FileInputStream与FileOutputStream类都用来操作磁盘文件。

FileInputStream构造方法:

FileInputStream(String name);
FileInputStream(File file);

注: FileOutputStream有相同的构造方法,创建一个FileOutputStream对象时,可以指定不存在的文件名,但此文件不能是一个已被其它程序打开的文件。
例:
在这里插入图片描述
运行结果:
在这里插入图片描述
2.FileReader和FileWriter类
FileInputStream与FileOutputStream类只提供了对字节或字节数组的读取方法。由于汉字在文件中只占用两个字节,如果使用字节流,就有可能出现乱码现象,此时采用字符流FileReader和FileWriter类可以避免这种现象

(五)带缓存的输入/输出流
1.BufferedInputStream与BufferedOutputStream类
BufferedInputStream类的构造方法:1)BufferedInputStream(InputStream in);2)BufferedInputStream((InputStream in,int size)
说明:第一种构造方法创建了一个带有32个字节的缓存流;第二种构造方法按指定的大小来创建缓存区

BufferedOutputStream类的构造方法:1)BufferedOutputStream(OutputStream in);2)BufferedOutputStream((OutputStream in,int size)
说明:第一种构造方法创建了一个带有32个字节的缓存流;第二种构造方法按指定的大小来创建缓存区

2.BufferedReader与BufferedWriter类
BufferedReader类常用方法:

方法说明
read()读取单个字符
readLine()读取一个文本行,并将其返回为字符串。若无数据可读,则返回null

BufferedWriter类常用方法:

方法说明
write(String s,int off,int len)写入字符串的某一部分
flush()刷新该流的缓存
newLine()写入一个分隔符

例:

package IO流;
import java.io.*;
public class Student {
	public static void main(String[] args) {
        //定义字符串数组
		String content[]= {"好久不见","最近好吗","常联系"};
	    File file=new File("D:/word.txt");
	    try {
	    	FileWriter fw=new FileWriter(file);     //创建FileWriter类对象
	    	//创建BufferedWriter类对象
	    	BufferedWriter bufw=new BufferedWriter(fw);
	    	for(int k=0;k<content.length;k++) {  //循环遍历数组
	    		bufw.write(content[k]);     //将字符串数组中的元素写入到文件磁盘
	    		bufw.newLine();            //将数组中的单个元素以单行的形式写入文件
	    	}
	    	bufw.close();
	    	fw.close();
		}catch(Exception e) {
			e.printStackTrace();
		}
	    try {
	    	FileReader fr=new FileReader(file);   //创建FileReader类对象
	    	BufferedReader bufr=new BufferedReader(fr);    //创建BufferedReader类对象
	    	String s=null;    //创建字符串对象
	    	int i=0;   //声明int型变量
	    	//如果文件的文本行数不为null,则进入循环
	    	while((s=bufr.readLine())!=null) {
	    		i++;
	    		System.out.println("第"+i+"行:"+s);
	    	}
	    	bufr.close();
	    	fr.close();
	    }catch(Exception e) {
	    	e.printStackTrace();
	    }
	}

}

(七)ZIP压缩输入/输出流
java.util.zip包中的ZipOutputStream与ZipInputStream类来实现文件的压缩/解压缩。
1)如要从ZIP压缩文件内读取某个文件,要先找到对应文件的“目录进入点”(从它可知该文件在ZIP文件内的位置),才能读取这个文件的内容。
2)如要将文件内容写入ZIP文件内,必须先写入对应于该文件的“目录进入点”,并且要把写入文件内容的位置移到进入点所指的位置,然后再写入文件内容。
3)ZipEntry类产生的对象,时用来代表一个ZIP压缩文件内的进入点(entry)。

1.压缩文件
利用ZipOutputStream类对象,可将文件压缩为.zip文件。其构造方法如下:

ZipOutputStream(OutputStream out)

ZipOutputStream常用方法:

方法说明
putNextEntry(ZipEntry e)开始写一个新的ZipEntry,并将流内的位置移到此entry所指数据的开头
write(byte[] b,int off,int len)将字节数组写入当前ZIP条目数据
finish()完成写入ZIP输出流的内容,无须关闭它所配合的OutputStream
setComment(String comment)可设置此ZIP文件的注释文字

例:
在这里插入图片描述
在这里插入图片描述
运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值