Java IO

Java IO

1 框架图

最重要的就是5个类和三个接口

Java IO
File类
字节类
字符类
接口
InputStream
OutputStream
Reader
Writer
Closeable
Flushable
Serializable
API
节点流
处理流
节点流
处理流
ByteArrayInputStream
FileInputStream
BufferedInputStream
DataInputStream
ObjectInputStream
PrintStream
FileReader
InputStreamReade
BufferReader

2 File对象

主要是相关的api

File.separator路径分隔符
File (String parent , String chlid)
File (File parent , String child)
File (String name)
构造器
getName() getPath()等
isFile() exist()等
length
createNewFile() delete()

3. 字节流

标准步骤

  1. 选择源
  2. 创建流
  3. 操作
  4. 关闭

3.1 ByteArrayInputStream

从内存中获取数据,对象等,不用释放操作系统资源,因此不用关闭

输出时不指定源 输出到一块缓冲区中 用toByteArray()获取字节数组

3.2 BufferedInputStream

inputStream =new BufferedInputStream(new FileInputStream(src));//套上缓冲功能

3.3 数据流和对象流

DataStream和ObjectStream

先写出后读取 按原来的顺序读取

读写数据的同时还保留了类型

DataInputStream dataInputStream=new DataInputStream(new BufferedInputStream(new ByteArrayInputStream(bos.toByteArray())));

对象流还可以传输自定义对象,注意要implements Serializable的对象才可以序列化

transient 让对象某个属性不可以序列化

3.4 打印流

PrintStream

可以自动刷新 打印到System.out 控制台

	//重定向输出端
	System.setOut(一个打印流);
	System.out.println("aaaa");

以后syso的时候就输出到那个打印流去了

//重定向回控制台

System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream(FileDescriptor.out)),true));   //FileDescriptor.out  标准输出

4.字符流

BufferedReader

  1. 使用字符缓冲输入流和字符缓冲输出流 提高性能
  2. 并使用新增方法(所以不能发生多态) 逐行操作
  3. string = BufferedReader.readLine())!=null 逐行读取
  4. write(string) newLine

InputStreamReader

转移流

字节流与字符流之间的转换

  • 以字符流的形式操作字节流
  • 指定编码解码字符集
  • Reader 字节流————》字符流 解码
  • Writer 字符流————》字节流 编码
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
			 BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));)

PrintWriter

构造方法可以跟writer 也可以跟OutputStream

5 文件的分割和合并

5.1 随机访问流

RandomAccessFile 随机读取和写入流

有一个seek(beginPos)方法可以指定从文件的哪里开始读

5.2 序列流

可以将多个输入流当做一个输入流来用

Vector<InputStream> vi =new Vector<>();
for(int i=0;i<dst_path.size();i++) {
    vi.add(new BufferedInputStream(new FileInputStream(new File(dst_path.get(i)))));
		}
//vector 输入流的容器
//然后生成Sequence流 就可以将多个输入流当成一个输入流来进行操作
SequenceInputStream sis =new SequenceInputStream(vi.elements());

sis.read(flush)依然将每个流挨个读
sis.close()

6. CommonsIo

下载 解压 新建lib文件夹 将commons-io和它的source一起放入lib 右键io选择buildpath,add

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值