栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java IO字节流

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java IO字节流

文章目录

1. IO流

1.1 IO流概述和分类

1. IO流介绍2. IO流的分类3. IO流的使用场景 1.2 字节流写数据

1. 字节流抽象基类2. 字节输出流3. 使用字节输出流写数据的步骤4. 示例代码 1.3 字节流写数据的三种方式

1. 写数据的方法分类2. 示例代码 3.4 字节流写数据的两个小问题

1. 字节流写数据如何实现换行2. 字节流写数据如何实现追加写入3. 示例代码 3.5 字节流写数据加异常处理

1. 异常处理格式2. 示例代码 3.6 字节流读取数据(按字节读取数据)

1. 字节输入流2. 字节输入流读取数据的步骤3. 示例代码 3.7 字节流读取数据(按字节数组读取数据)

1. 字节数组读取数据的方法2. 示例代码:

1. IO流 1.1 IO流概述和分类 1. IO流介绍

IO:输入/输出(Input/Output)流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输IO流就是用来处理设备间数据传输问题的。常见的应用:文件复制,文件上传,文件下载 2. IO流的分类

按照数据的流向

输入流:读数据输出流:写数据 按照数据类型来分

字节流

字节输入流字节输出流 字符流

字符输入流字符输出流 3. IO流的使用场景

如果操作的是纯文本文件,优先使用字符流如果操作的是图片、视频、音频等二进制文件。优先使用字节流如果不确定文件类型,优先使用字节流。字节流是万能的流 1.2 字节流写数据 1. 字节流抽象基类

InputStream:这个抽象类是表示字节输入流的所有类的超类-OutputStream:这个抽象类是表示字节输出流的所有类的超类子类名特点:子类名称都是以其父类名作为子类名的后缀 2. 字节输出流

FileOutputStream(String name):创建文件输出流以指定的名称写入文件 3. 使用字节输出流写数据的步骤

    创建字节输出流对象(调用系统功能创建了文件,创建字节输出流对象,让字节输出流对象指向文件)调用字节输出流对象的写数据方法释放资源(关闭此文件输出流并释放与此流相关联的任何系统资源)
4. 示例代码
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo {
    public static void main(String[] args) throws IOException {
        //创建字节输出流对象
        //FileOutputStream(String name):创建文件输出流以指定的名称写入文件
        FileOutputStream fos = new FileOutputStream("myByteStream\fos.txt");
        
        
    
        //void write(int b):将指定的字节写入此文件输出流
        fos.write(97);

        //最后都要释放资源
        //void close():关闭此文件输出流并释放与此流相关联的任何系统资源。
        fos.close();
    }
}
1.3 字节流写数据的三种方式 1. 写数据的方法分类
方法名说明
void write(int b)将指定的字节写入此文件输出流 一次写一个字节数据
void write(byte[] b)将 b.length字节从指定的字节数组写入此文件输出流 一次写一个字节数组数据
void write(byte[] b, int off, int len)将 len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流 一次写一个字节数组的部分数据
2. 示例代码
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo {
    public static void main(String[] args) throws IOException {

        //FileOutputStream(String name):创建文件输出流以指定的名称写入文件
        FileOutputStream fos = new FileOutputStream("myByteStream\fos.txt");

        //FileOutputStream(File file):创建文件输出流以写入由指定的 File对象表示的文件
        // File file = new File("myByteStream\fos.txt");

        //void write(int b):将指定的字节写入此文件输出流
        // fos.write(97);

        // void write(byte[] b):将 b.length字节从指定的字节数组写入此文件输出流
        // byte[] bys = {97, 98, 99, 100, 101};
        
        //byte[] getBytes():返回字符串对应的字节数组
        byte[] bys = "abcde".getBytes();

        //void write(byte[] b, int off, int len):将 len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流
        fos.write(bys,1,3);

        //释放资源
        fos.close();
    }
}
3.4 字节流写数据的两个小问题 1. 字节流写数据如何实现换行

windows:rnlinux:nmac:r 2. 字节流写数据如何实现追加写入

public FileOutputStream(String name,boolean append)创建文件输出流以指定的名称写入文件。如果第二个参数为true ,则字节将写入文件的末尾而不是开头示例代码 3. 示例代码

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

public class Demo {
    public static void main(String[] args) throws IOException {

        //创建字节输出流对象
        // FileOutputStream fos = new FileOutputStream("myByteStream\fos.txt");
        FileOutputStream fos = new FileOutputStream("myByteStream\fos.txt", true);
        
        //写数据
        for (int i = 0; i < 10; i++) {
            fos.write("hello".getBytes());
            fos.write("rn".getBytes());
        }
        
        //释放资源
        fos.close();
    }
}
3.5 字节流写数据加异常处理 1. 异常处理格式

try-catch-finally

try{
	可能出现异常的代码;
}catch(异常类名 变量名){
	异常的处理代码;
}finally{
	执行所有清除操作;
}

finally特点

被finally控制的语句一定会执行,除非JVM退出 2. 示例代码

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

public class Demo {
    public static void main(String[] args) {
        
        //加入finally来实现释放资源
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream("myByteStream\fos.txt");
            fos.write("hello".getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
3.6 字节流读取数据(按字节读取数据) 1. 字节输入流

FileInputStream(String name):通过打开与实际文件的连接来创建一个FileInputStream ,该文件由文件系统中的路径名name命名 2. 字节输入流读取数据的步骤

创建字节输入流对象调用字节输入流对象的读数据方法释放资源 3. 示例代码

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

public class Demo {
    public static void main(String[] args) throws IOException {

        //创建字节输入流对象
        //FileInputStream(String name)
        FileInputStream fis = new FileInputStream("myByteStream\fos.txt");
        int by;

        

        while ((by=fis.read())!=-1) {
            System.out.print((char)by);
        }

        //释放资源
        fis.close();
    }
}
3.7 字节流读取数据(按字节数组读取数据) 1. 字节数组读取数据的方法

public int read(byte[] b):从输入流读取最多b.length个字节的数据返回的是读入缓冲区的总字节数,也就是实际的读取字节个数 2. 示例代码:

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

public class Demo {
    public static void main(String[] args) throws IOException {
        
        //创建字节输入流对象
        FileInputStream fis = new FileInputStream("myByteStream\fos.txt");
        
        
        
        byte[] bys = new byte[1024]; //1024及其整数倍
        int len;
        while ((len=fis.read(bys))!=-1) {
            System.out.print(new String(bys,0,len));
        }
        
        //释放资源
        fis.close();
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/735018.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号