JAVA io流

Java中的流从流向来分为输入流和输出流
输入流:是指java程序从外部(比如文件,内存中)读取数据
输出流:是指用java程序向外部(比如文件,内存)写入数据

JAVA中的流按照流中处理数据的方式可以分为字节流和字符流
字节流分为InputStream以及OutputStream
字符流分为Reader以及Writer

字节流

在这里插入图片描述

字符流

在这里插入图片描述

结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。
字节流
Writer

Writer append​(char c) 将指定的字符附加到此字符流
Writer append​(CharSequence csq) 将指定的字符序列附加到此字符流
Writer append​(CharSequence csq, int start, int end) 将指定字符序列的子序列附加到此字符流
abstract void close​() 关闭流,先刷新
abstract void flush​() 刷新流
void write​(char[] cbuf) 写入一个字符数组。
abstract void write​(char[] cbuf, int off, int len) 写入字符数组的一部分
void write​(int c) 写一个字符
void write​(String str) 写一个字符串
void write​(String str, int off, int len) 写一个字符串的一部分

缓冲流:BufferedInputStream ,BufferedOutputstream,BufferedWriter,BufferedReade中缓冲流相比较于其他的流效率更高,缓冲流,没有频繁的和磁盘打交道而是将数据存放再内存中,最后再和磁盘打交道,一定要刷新要不不会写入磁盘

Reader

abstract void close​() 关闭流并释放与之相关联的任何系统资源。
void mark​(int readAheadLimit) 标记流中的当前位置。
boolean markSupported​() 告诉这个流是否支持mark()操作。
int read​() 读一个字符
int read​(char[] cbuf) 将字符读入数组。
abstract int read​(char[] cbuf, int off, int len) 将字符读入数组的一部分。
int read​(CharBuffer target) 尝试将字符读入指定的字符缓冲区。
boolean ready​() 告诉这个流是否准备好被读取。
void reset​() 重置流。
long skip​(long n) 跳过字符

字节流
IntputStream

int available​() 从下一次调用此输入流的方法返回可从该输入流读取(或跳过)的字节数,而不会阻塞。
void close​() 关闭此输入流并释放与流相关联的任何系统资源。
void mark​(int readlimit) 标记此输入流中的当前位置。
boolean markSupported​() 测试此输入流是否支持 mark和 reset方法。
abstract int read​() 从输入流读取数据的下一个字节。
int read​(byte[] b) 从输入流中读取一些字节数,并将它们存储到缓冲器阵列 b 。
int read​(byte[] b, int off, int len) 从输入流读取最多 len个字节的数据到字节数组。
byte[] readAllBytes​() 从输入流读取所有剩余字节。
int readNBytes​(byte[] b, int off, int len) 将所请求的字节数从输入流读入给定的字节数组。
void reset​() 将此流重新定位到最后在此输入流上调用 mark方法时的位置。
long skip​(long n) 跳过并丢弃来自此输入流的 n字节的数据。
long transferTo​(OutputStream out) 从该输入流中读取所有字节,并按读取的顺序将字节写入给定的输出流。

OutputStream

void close​() 关闭此输出流并释放与此流相关联的任何系统资源。
void flush​() 刷新此输出流并强制任何缓冲的输出字节被写出。
void write​(byte[] b) 将 b.length字节从指定的字节数组写入此输出流。
void write​(byte[] b, int off, int len) 从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。
abstract void write​(int b) 将指定的字节写入此输出流。

FileInputStream

int available​() 返回从此输入流中可以读取(或跳过)的剩余字节数的估计值,而不会被下一次调用此输入流的方法阻塞。
void close​() 关闭此文件输入流并释放与流相关联的任何系统资源。
protected void finalize​() 已过时。
finalize方法已被弃用。 为了执行清理而覆盖finalize子类应该修改为使用替代清理机制,并删除覆盖的finalize方法。 当覆盖finalize方法时,其实现必须明确确保按照super.finalize()所述调用super.finalize() 。 有关迁移选项的更多信息,请参阅Object.finalize()的规范。
FileChannel getChannel​() 返回与此文件输入流相关联的唯一的FileChannel对象。
FileDescriptor getFD​() 返回表示与此 FileInputStream正在使用的文件系统中的实际文件的连接的 FileDescriptor对象。
int read​() 从该输入流读取一个字节的数据。
int read​(byte[] b) 从该输入流读取最多 b.length个字节的数据到一个字节数组。
int read​(byte[] b, int off, int len) 从该输入流读取最多 len个字节的数据到字节数组。
long skip​(long n) 跳过并从输入流中丢弃 n字节的数据。

FileOutputStream

void close​() 关闭此文件输出流并释放与此流相关联的任何系统资源。
protected void finalize​() 已过时。
finalize方法已被弃用。 为了执行清理,覆盖finalize子类应被修改为使用替代的清理机制,并删除覆盖的finalize方法。 当覆盖finalize方法时,其实现必须明确确保按照super.finalize()中所述调用super.finalize() 。 有关迁移选项的更多信息,请参阅Object.finalize()的规范。
FileChannel getChannel​() 返回与此文件输出流相关联的唯一的FileChannel对象。
FileDescriptor getFD​() 返回与此流相关联的文件描述符。
void write​(byte[] b) 将 b.length字节从指定的字节数组写入此文件输出流。
void write​(byte[] b, int off, int len) 将 len字节从指定的字节数组开始,从偏移量 off开始写入此文件输出流。
void write​(int b) 将指定的字节写入此文件输出流。

FileOutputStream和FileInputStream示例
public static void main(String[] args) throws IOException {
    String pathName = "D:" + File.separator + "a.txt";
    File file = new File(pathName);
    OutputStream outputStream = new FileOutputStream(file);
    outputStream.write("abc1".getBytes());
    outputStream.close();
    InputStream inputStream = new FileInputStream(file);
   //这个字节数组的意思每次读取最多读取多少字符
    byte[] bytes = new byte[1024];
    int length = inputStream.read(bytes);
    String s = new String(bytes, 0, length);
    System.out.println(s);
    inputStream.close();
}
BufferedInputStream和BufferedOutputStream 示例
public static void main(String[] args) throws IOException {
    String pathName = "D:" + File.separator + "a.txt";
    File file = new File(pathName);
 
    BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(file));
    BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(new File("D:" + File.separator + "b.txt")));
 
    byte[] bytes = new byte[4];
    while (inputStream.read(bytes) != -1) {
        System.out.println(new String(bytes));
        outputStream.write(bytes);
    }
    inputStream.close();
    outputStream.close();
}

上面代码为把一个文件读取出来写入另一个文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值