JavaIO系列——概述、字节流示例

181 篇文章 3 订阅
21 篇文章 1 订阅
本文介绍了Java I/O库的基础概念,包括流的分类(按流向、按单位),如字节流和字符流的区别,以及节点流和过滤流的作用。通过FileInputStream和FileOutputStream实例演示了如何使用字节流进行文件复制。
摘要由CSDN通过智能技术生成

什么是流

内存与存储设备之间传输数据的通道

输入流(按流向)

将存储设备中的内容读入到内存中

输出流(按流向)

将内存中的内容写入到存储设备中

字节流(按单位)

以字节为单位,可以读写多有数据

字符流(按单位)

以字符为单位,只能读写文本数据

节点流(按功能)

具有实际传输数据的读写功能

过滤流(按功能)

在节点流的基础之上增强功能


字节流(抽象类)

InputStream

输入流

常用方法
  1. available():返回此输入流下一个方法调用,可以不受阻塞地从输入流读取或跳过估计的字节数
  2. close():关闭输入流并释放资源
  3. mark(int readlimit):在此输入流中标记指定位置
  4. read():从输入流中读取数据的下一个字节
  5. read(btye[] b):读取一定数量的字节并将其存储在缓冲区数组b中,达到尾部返回-1
  6. reset():将此流重新定位到最后一次对此输入流调用mark方法的地方
  7. skip(long n):跳过并丢弃此输入流中数据的n个字节

OutputStream

输出流

常用方法
  1. flush():刷新此输出流并强制写出所有缓冲的输出字节
  2. close():关闭输出流并释放资源
  3. write(byte[] b):将b长度个字节从指定btye数组写入此输出流
  4. wirte(int b):写指定长度的字节

字节流(实现类)

FileInputStream

import java.io.FileInputStream;
import java.io.IOException;

public class demo3 {
    public static void main(String[] args) throws IOException {
        String path ="C:\\Users\\Syf200208161018\\Desktop\\学校服务器.txt";
        FileInputStream fileInputStream = new FileInputStream(path);
        //读取
        byte[] bytes = new byte[1024];
        int count = 0;
        while ((count=fileInputStream.read(bytes))!=-1){
            System.out.println(new String(bytes,0,count));
        }
        fileInputStream.close();
    }
}

FileOutputStream

覆盖写:new FileOutputStream(path);
追加写:new FileOutputStream(path,true);

import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class demo4 {
    public static void main(String[] args) throws IOException {
        //创建文件
        String path = "C:\\Users\\Syf200208161018\\Desktop\\neww.txt";
        FileOutputStream fileOutputStream = new FileOutputStream(path);
        //写入
        fileOutputStream.write(97);
        fileOutputStream.write('b');
        String str = "sadhkds撒低啊";
        fileOutputStream.write(str.getBytes(StandardCharsets.UTF_8));
        fileOutputStream.close();
    }
}

使用字节流进行文件复制

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyFile {
    public static void main(String[] args) throws IOException {
        String pathIn = "C:\\Users\\Syf200208161018\\Desktop\\软件.pdf";
        String pathOut = "C:\\Users\\Syf200208161018\\Desktop\\copy.pdf";

        //输入
        FileInputStream fileInputStream = new FileInputStream(pathIn);
        //输出
        FileOutputStream fileOutputStream = new FileOutputStream(pathOut);
        //读取后写入
        byte[] bytes = new byte[1024];
        int count = 0;
        while ((count = fileInputStream.read(bytes))!=-1){
            //确保输出不会溢出
            fileOutputStream.write(bytes,0,count);
        }
        fileInputStream.close();
        fileOutputStream.close();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值