java IO流-常用流

根据java类之间的关系,整理出java常用IO流之间的UML类图

初学UML,如果有错的话请谅解,这里面只写了关键的方法。

字节输入流:InputStream类为所有自己输入流的父类
主要方法有三个:

int read()
从流里面读出一个字节。不推荐使用
int read(byte[] b)
`将数据读入到字节数组中,并返回所读的字节数
inte read(byte[] b,int off,int len)
off 从哪里开始读
len读取多少
将输入流中最多len个数据字节读入字节数组
其他方法:
void close()
关闭流资源
int available()
返回不受阻塞地从此输入流读取的字节数
long skip(long n)
跳过和放弃此输入流中的n个数据字节,该方法有可能失效
boolean markSupported()
测试此输入流是否支持mark和reset方法
void mark(int n)
在此输入流中标记当前的位置
void reset()
将此流重新定位到对此输入流最后调用mark方法时的位置。
字节输出流:OutputStream是所有字节输出流的父类。
三个基本的write()方法:
void write(int n)
将指定的字节写入此输出流。
void write(byte[] b)
将b.length个字节从指定的字节数组写入此输出流
void write(byte[] b,int off,int len)
将指定字节数组中从偏移量off开始的len个字节写入此输出流
其他方法:
void close()
关闭此输出流并释放与此流有关的所有系统资源
void flush()
刷新此输出流并强制写出所有缓冲的输出字节

文件输入输出流:FileInputStream和FileOutputStream,要构造一个FileInputStream,所关联的文件必须存在并且可读。

FileInputStream fis = new FileInputStream("demo.java");

要构造一个FileOutputStream,而输出文件已经存在,则它将被覆盖

FileOutputStream fos = new FileInputStream("results.dat");

想要以追加的方式写,则需要一个额外的参数,如:

FileOutputStream outfile = new FileOutputStream("results.dat",true);

字符流:Reader和Writer所有字符流的父类型。
java技术使用Unicode来表示字符串和字符,而且提供16位版本的流,以便用类似的方法处理字符。如果构造了一个连接到流的Reader和Writer,转换规则会在使用缺省平台所定义的字节编码和Unicode之间切换。
桥梁流:InputStreamReader和OutputStreamWriter(字节流转换成字符流的转换器)
这两个类不是用于直接输入输出的,他是将字节流转换成字符流的桥转换器,并可以指定编解码方式。
逐行读写流:BufferedReader/BufferedWriter
以上两个都是过滤流,需要用其他的节点流来作为参数的构造对象。
BufferedReader的方法:readLine():String,当他的返回值是null时,就表示读取完毕了。要注意,在写入时要注意写换行符,否则会出现阻塞。
BufferedWriter的方法:newLine(),这个方法会写出一个换行符。
管道流:线程交互的时候使用
PipedInputStream/PipedOutputStream
传送输出流可以连接到传送输入流,以创建通信管道。传送输出流是管道的发送端。通常,数据由某个线程写入PipedOutputStream对象,并由其他线程从连接的PipedInputStream读取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,可以了解到Java IO流分为字节和字符两种类型。其中字节以字节为单位进行读写,而字符以字符为单位进行读写。下面是Java IO字节的构造方法和使用方法: 1. InputStream类是所有字节输入的父类,常用方法有: - read():从输入中读取一个字节的数据。 - read(byte[] b):从输入中读取一定数量的字节,并将其存储在缓冲区数组b中。 - skip(long n):跳过并丢弃输入中的n个字节数据。 - available():返回输入中可以被读取的字节数。 2. FileInputStream类是InputStream类的子类,常用方法有: - FileInputStream(String name):创建一个文件输入,以读取具有指定名称的文件。 - read():从输入中读取一个字节的数据。 - read(byte[] b):从输入中读取一定数量的字节,并将其存储在缓冲区数组b中。 - skip(long n):跳过并丢弃输入中的n个字节数据。 - available():返回输入中可以被读取的字节数。 3. FileOutputStream类是OutputStream类的子类,常用方法有: - FileOutputStream(String name):创建一个文件输出,以写入具有指定名称的文件。 - write(int b):将指定的字节写入此文件输出。 - write(byte[] b):将b.length个字节从指定的字节数组写入此文件输出中。 - flush():刷新此输出并强制任何缓冲的输出字节被写出。 下面是一个Java IO字节复制文件的示例代码: ```java public static void main(String[] args) { try { // 创建要复制文件的字节输入 InputStream inp = new FileInputStream("/Users/chenyq/Documents/learn_Java/code/file-io-app/src/test.pdf"); // 创建目标路径的字节输出 OutputStream oup = new FileOutputStream("/Users/chenyq/Documents/newtest.pdf"); // 使用文件输入获取要复制文件的全部数据的字节数组 byte[] arr = inp.readAllBytes(); // 使用文件输出将字节数组写入目标文件 oup.write(arr); System.out.println("复制成功!"); // 释放资源 inp.close(); oup.close(); } catch (IOException e) { e.printStackTrace(); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值