Java SE(十七):FIS、FOS、BIS和BOS、IO流、字符流


Java SE

例。


一、FIS

FIS(构造、异常、close)

FileInputStream(File file)
通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的File对象file指定

FileInputStream(String name)
通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的路径名name指定

IOException
当发生某种I/O异常时,抛出此异常。此类为异常的通用类,它是由失败的或中断的I/O操作生成的

close方法
关闭此输入流并释放与该流关联的所有系统资源

FIS(read)

方法 功能
int read() 读取一个byte无符号填充到int低八位
int read(byte[] b) 从此输入流中将最多b.length个字节的数据读入一个字节数组中,返回读取的字节的个数
int read(byte[] b,int off,int len) 从此输入流中将最多len个字节的数据读入一个字节数组中
import java.io.FileInputStream;
import java.io.IOException;

/**
 * java.io.FileInputStream
 * 文件输入流,是一个低级流,用于从文件中读取字节
 */
public class FISDemo {
   
    public static void main(String[] args) throws IOException {
   
        FileInputStream file = new FileInputStream("fos.txt");
        byte[] data = new byte[100]; //创建一个100长度字节的数组
        int len = file.read(data); //读取file文件中一百个字节数据
        String str = new String(data,0,len,"UTF-8"); //从指针0位置按UTF-8格式读取len长度字节
        System.out.println(str);
        file.close();
    }
}

代码案例:使用文件流来复制文件

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

/**
 * 使用文件流复制文件
 */
public class CopyDemo {
   
    public static void main(String[] args) throws IOException {
   
        /*
        使用文件输入流读取原文件,再使用文件输出流向目标文件中写入
        顺序从原文件中读取每个字节并写入到目标文件即可完成复制
         */
        FileInputStream src = new FileInputStream("image.png");
        FileOutputStream desc = new FileOutputStream("image02.png");
        int d = -1; //默认在文件末尾,只是赋初值,具体值赋几都行
        byte[] data = new byte[100];
        long start = System.currentTimeMillis();
        while((d=src.read(data))!=-1){
   
            desc.write(data,0,d); //每次最多写data个字节,从指针0可是写d个字节
        }
        long end = System.currentTimeMillis();
        System.out.println("复制完毕!耗时:"+(end-start)+"ms");
        src.close();
        desc.close();
    }
}

二、FOS

FOS(构造)

方法 功能
FileOutputStream(File file) 创建一个向指定File对象表示的文件中写入数据的文件输出流
FileOutputStream(File file,boolean append) 创建一个向指定File对象表示的文件中写入数据的文件输出流
FileOutputStream(String name) 创建一个向具有指定名称的文件中写入数据的输出文件流
FileOutputStream(String name,boolean append) 创建一个向具有指定name的文件中写入数据的输出文件流

FOS(write)

方法 功能
void write(byte[] b) 将b.length个字节从指定字节数组写入此文件输出流中
void write(byte[] b,int off,int len) 将指定字节数组中从偏移量off开始的len个字节写入此文件输出流
void write(int b) 将指定字节写入此文件输出流
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 流
 * 流根据方向的不同分为输入流和输出流,参照点为当前程序
 * 输入流用来读取数据,输出流用来写出数据
 * java.io.InputStream抽象类,定义了输入流的读取字节方法,所有的字节输入流都继承自它
 * java.io.OutputStream则是所有字节输出流的父类
 *
 * 流分为节点流与处理流
 * 节点流,也叫低级流,是负责读写数据的流,读写操作中必须要有低级流,数据源明确
 * 处理流,也叫高级流,读写可以没有高级流,高级流也不能独立存在,必须用于处理其他流,处理其他流的目的是简化读写数据中的操作
 *
 * java.io.FileOutputStream
 * 文件输出流,是一个低级流,作用是向文件中写出字节
 */
public class FOSDemo  {
   
    public static void main(String[] args) throws IOException {
   
        /*
        默认创建的FOS是覆盖写操作
        FOS会将文件数据(若有数据)全部删除,然后在开始写
         */
        FileOutputStream fos = new FileOutputStream("fos.txt");
        String str = "我喜欢Java!";
        /*
        String->byte[]

        byte getBytes()
        将当前字符串按照系统默认字符集转换为一组字节

        byte getBytes(String csn)
        按照给定的字符集将当前字符串转换为一组字节
         */
        byte[] date = str.getBytes</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹿快跑~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值