IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 输入输出流 -> 正文阅读

[开发工具]输入输出流

概述

输出流

输入流

在这里插入图片描述

要掌握内容

在这里插入图片描述

file类概述

在这里插入图片描述

对文件使用一些常用api

在这里插入图片描述

public static void main(String[] args) {
        //创建文件对象
        File file = new File("d:\\imooc\\set\\io\\score.txt");
        //对文件对象进行判断
        System.out.println("是否是目录:"+file.isDirectory());
        System.out.println("是否是文件:"+file.isFile());
        //创建文件目录,这里用两个\\代表取消反义
        File file1 = new File("d:\\imooc\\set\\io\\HashSet");
        if(!file1.exists()){
            file1.mkdir();
        }
        //创建文件
        //方法同上,不过哟用的api是  file.createNewFile
    }

在这里插入图片描述

绝对路径和相对路径

绝对路径:从盘符开始的路径
相对路径:从当前路径开始的路径

相对路径理解 java文件和 thread.txt文件处于同一目录下(用命令实现java命令时)

若使用idea或eclipse编译器进行编译时,其会将文件存放于工程目录下面
在这里插入图片描述

字节流

字节输入和输出流

在这里插入图片描述
在这里插入图片描述

FileInputStream

在这里插入图片描述

常用api

在这里插入图片描述

public static void main(String[] args) {
        FileInputStream file = null;
        try {
            file = new FileInputStream("hello.txt");
            int n =file.read();
            while (n!=-1){
                System.out.println((char)n);
                n=file.read();
            }
            file.close();
            //这里结构可以进行优化为
            // int n=0 
            //while((n=file.read))!=-1){}
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        

    }

该程序的运行结果如下所示

H
e
l
l
o

**说明:**这里read方法返回值为-1,也即读到文件末尾

FileOutputStream

在这里插入图片描述
使用方法同FileInputStream
**注意:**字节流主要用于跟二进制相关的数据

字符流

概述

在这里插入图片描述
在这里插入图片描述
这里注意区分与字节流的区别
字节流:读取和写入 都是需要二进制格式的数据
字符流:qq发消息 发的是字符,网络传输的时候 读取的时候,需要转化为字符

字符转换流

用法差不多 直接上例子

 public static void main(String[] args) {
        FileInputStream fis = null;
        try {
            fis = new FileInputStream("hello.txt");
            InputStreamReader isr = new InputStreamReader(fis);
            int n=0;
            char[] cbfu = new char[10];
            while((n=isr.read())!=-1){
                System.out.print((char)n);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


    }

所读入的文件内容为
在这里插入图片描述

该程序的运行结果如下所示

Hello按照新的实打实的撒的
ad阿萨德萨达道德经发给大家发给I人工湖螺纹钢hoGPWGIWF SDFH KQF WE FQ
AKH FH IOQEUPQIEF uf hsdifh di的见客户即熬好欧福建荣丰容器发饿

输出方式类似,new出字节流对象,然后将其进行输入流转换

其他字符流

BufferedReader 和BufferedWriter
字符缓冲流,增加传输效率

 FileInputStream fis = new FileInputStream("hello.txt");
 InputStreamReader isr = new InputStreamReader(fis);
 BufferedReader br = new BufferedReader(isr);

简单来说,就是对转过来的字符在套上一层缓冲,其他一样
**疑惑:**为什么需要通过字节流读取数据?
这是因为 这里模仿的是 数据从网络上传输过来(二进制),实际上,字符流也有自己的读取文件类。

对象序列化

场景:将多条信息进行封装成一个对象,进行传输过去

实现步骤

在这里插入图片描述

涉及的类

在这里插入图片描述
1.创建goods类 实现接口

public class Goods implements Serializable {
    private String bianhao;
    private String name;
    private double price;

    public String getBianhao() {
        return bianhao;
    }

    @Override
    public String toString() {
        return "Goods{" +
                "bianhao='" + bianhao + '\'' +
                ", name='" + name + '\'' +
                ", price=" + price +
                '}';
    }

    public void setBianhao(String bianhao) {
        this.bianhao = bianhao;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public Goods(String bianhao, String name, double price) {
        this.bianhao = bianhao;
        this.name = name;
        this.price = price;
    }
}

2.创建测试类

public class GoodsTest {
    public static void main(String[] args) {
        Goods goods = new Goods("g500", "电脑", 3000);
        try {
            FileOutputStream fis = new FileOutputStream("mooc.txt");
            ObjectOutputStream oos = new ObjectOutputStream(fis);
            FileInputStream fos = new FileInputStream("mooc.txt");
            ObjectInputStream ois = new ObjectInputStream(fos);
            //进行写操作
            oos.writeObject(goods);
            oos.flush();
            //进行读操作
            Goods goods1 = (Goods) ois.readObject();
            System.out.println(goods1);
            fis.close();
            oos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

    }
}

该程序的运行结果如下所示

Goods{bianhao='g500', name='电脑', price=3000.0}
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:31:11  更:2022-04-04 12:31:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:22:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码