Java入门—输入输出流

本文涉及的产品
系统运维管理,不限时长
简介: File类的使用文件是:文件可认为是相关记录或放在一起的数据的集合。Java中,使用java.io.File类对文件进行操作public class FileDemo { public static void main(String[] ...

File类的使用

文件是:文件可认为是相关记录或放在一起的数据的集合。
Java中,使用java.io.File类对文件进行操作

public class FileDemo {
    public static void main(String[] args) {
        String path = "E:\\pdd";
        File f = new File(path);
        //判断是文件还是目录
        System.out.println(f.isFile());
        System.out.println(f.isDirectory());
    }
}
img_b0268331ac08b076049063ae58675be0.png
image.png

对于File类还有其他很多方法的使用,建议在使用时进行查询文档。

字节流

  • 字节输入流 :InputStream (读)
  • 字节输出流 :OutputStream (写)


    img_867fb87b01ab827546261a6026c9b8b9.png
    image.png
img_0e665d1a94e53b7664259213c5524ba8.png
image.png

FileInputStream
  • 读取诸如图像数据的原始字节流,如图片,文件中的字节。


    img_72883cfd7a389934d33525059dbf94cd.png
    image.png
img_246be1b735e84b94198c013f471dcf62.png
image.png
public class FileDemo {
    public static void main(String[] args) {
        String path = "";

        // FileInputStream,
        try {
            FileInputStream fs = new FileInputStream(path);
            try {
                
                int n = fs.read();
                System.out.print((char)n);
                fs.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

代码中注意异常的继承关系,外层异常不能为内层异常的子类。

FileOutputStream

将数据写入文件中。


img_d9b10b8e8d9185cd1acb2cca6f30d7a7.png
image.png
img_720acf55f7db7aed77918f90896a786f.png
image.png
缓冲流
  • BufferedInputStream
  • BufferedOutputStream
    缓冲流,当缓冲区满了,提交,减少频繁写入操作。
public class FileDemo {
    public static void main(String[] args) {
        String path = "";
        try {
            FileOutputStream fos = new FileOutputStream(path);
            BufferedOutputStream bos = new BufferedOutputStream(fos);

            FileInputStream fis = new FileInputStream(path);
            BufferedInputStream bis = new BufferedInputStream(fis);

            bos.write(50);
            bos.write('a');
            //提交数据到文件
            bos.flush();
            bos.close();

            System.out.println(bis.read());
            bis.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

字符流

  • 字符输入流 : Reader
  • 字符输出流 : Writer
字节字符转换流
  • InputStreamReader 输入
  • OutputStreamWriter 输出

读写数据时保持编码一致。

对象的序列化和反序列化

对象序列化步骤:

  1. 创建一个类继承Serializable接口
  2. 创建对象
  3. 处理对象(写文件,发http,入库等)
  4. 读取对线
  • ObjectInputStream 对象输入流
  • ObjectOutputStream 对象输出流

示例:
新建一个Goods.java文件,定义一个Goods类并继承Serializable接口

public class Goods implements Serializable{
    private String goodsId;
    private String goodsName;
    private double price;

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

    public Goods(String goodsId, String goodsName, double price){
        this.goodsId = goodsId;
        this.goodsName = goodsName;
        this.price = price;
    }

    public String getGoodsId() {
        return goodsId;
    }

    public void setGoodsId(String goodsId) {
        this.goodsId = goodsId;
    }

    public String getGoodsName() {
        return goodsName;
    }

    public void setGoodsName(String goodsName) {
        this.goodsName = goodsName;
    }

    public double getPrice() {
        return price;
    }

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

再建一个测试入口文件名为GoodsTest.java

public class GoodsTest {
    public static void main(String[] args) {
        String path = "1.txt";
        Goods gd = new Goods("001", "allen", 6.0);

        try {
            FileOutputStream fos = new FileOutputStream(path);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(gd);
            oos.writeBoolean(true);
            oos.flush();
            oos.close();
            System.out.println("-----------------------------------");
            FileInputStream fis = new FileInputStream(path);
            ObjectInputStream ois = new ObjectInputStream(fis);
            try {
                Goods gt = (Goods)ois.readObject();
                boolean b = ois.readBoolean();
                System.out.println(gt);
                System.out.println(b);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            ois.close();
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

对名为1.txt的文件进行类的存储和读取。

注:养成看官方文档的习惯,因为毕竟有些方法用的频率很少,当你使用时去查阅即可,文章中关于类的方法部分没有详情,请查阅官方手册,手册中写的很清楚。

如果文章对你有帮助记得点赞~,关注作者第一时间获得最新更新~~。
祝好~~~

目录
相关文章
|
1月前
|
设计模式 前端开发 Java
【前端学java】SpringBootWeb极速入门-分层解耦(03)
【8月更文挑战第13天】SpringBootWeb极速入门-分层解耦(03)
15 2
【前端学java】SpringBootWeb极速入门-分层解耦(03)
|
1月前
|
开发框架 前端开发 Java
【前端学java】SpringBootWeb极速入门-实现一个简单的web页面01
【8月更文挑战第12天】SpringBootWeb极速入门-实现一个简单的web页面01
50 3
【前端学java】SpringBootWeb极速入门-实现一个简单的web页面01
|
1月前
|
JSON 前端开发 Java
【前端学java】SpringBootWeb极速入门-请求参数解析(02)
【8月更文挑战第12天】SpringBootWeb极速入门-请求参数解析(02)
15 1
【前端学java】SpringBootWeb极速入门-请求参数解析(02)
|
20天前
|
算法 Java 开发者
Java 编程入门:从零到一的旅程
本文将带领读者开启Java编程之旅,从最基础的语法入手,逐步深入到面向对象的核心概念。通过实例代码演示,我们将一起探索如何定义类和对象、实现继承与多态,并解决常见的编程挑战。无论你是编程新手还是希望巩固基础的开发者,这篇文章都将为你提供有价值的指导和灵感。
|
22天前
|
存储 Java 程序员
Java中的集合框架:从入门到精通
【8月更文挑战第30天】在Java的世界里,集合框架是一块基石,它不仅承载着数据的存储和操作,还体现了面向对象编程的精髓。本篇文章将带你遨游Java集合框架的海洋,从基础概念到高级应用,一步步揭示它的奥秘。你将学会如何选择合适的集合类型,掌握集合的遍历技巧,以及理解集合框架背后的设计哲学。让我们一起探索这个强大工具,解锁数据结构的新视角。
|
24天前
|
Java 程序员 UED
Java中的异常处理:从入门到精通
【8月更文挑战第28天】在Java编程的世界里,异常处理是一块基石,它确保了程序的健壮性和可靠性。本文将通过深入浅出的方式,带你了解Java异常处理的基本概念、分类、以及如何有效地捕获和处理异常。我们将一起探索try-catch-finally结构的奥秘,并学习如何使用throws关键字声明方法可能会抛出的异常。此外,我们还会讨论自定义异常类的创建和使用,以及最佳实践。无论你是Java新手还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识,帮助你编写出更加稳定和可靠的代码。
|
24天前
|
编解码 网络协议 Oracle
java网络编程入门以及项目实战
这篇文章是Java网络编程的入门教程,涵盖了网络编程的基础知识、IP地址、端口、通讯协议(TCP和UDP)的概念与区别,并提供了基于TCP和UDP的网络编程实例,包括远程聊天和文件传输程序的代码实现。
java网络编程入门以及项目实战
|
9天前
|
Java 程序员
Java中的异常处理:从入门到精通
在Java编程的世界中,异常处理是保持程序稳定性和可靠性的关键。本文将通过一个独特的视角—把异常处理比作一场“捉迷藏”游戏—来探讨如何在Java中有效管理异常。我们将一起学习如何识别、捕捉以及处理可能出现的异常,确保你的程序即使在面对不可预见的错误时也能优雅地运行。准备好了吗?让我们开始这场寻找并解决Java异常的冒险吧!
|
1月前
|
前端开发 IDE Java
"揭秘前端转Java的秘径:SpringBoot Web极速入门,掌握分层解耦艺术,让你的后端代码飞起来,你敢来挑战吗?"
【8月更文挑战第19天】面向前端开发者介绍Spring Boot后端开发,通过简化Spring应用搭建,快速实现Web应用。本文以创建“Hello World”应用为例,展示项目基本结构与运行方式。进而深入探讨三层架构(Controller、Service、DAO)下的分层解耦概念,通过员工信息管理示例,演示各层如何协作及依赖注入的使用,以此提升代码灵活性与可维护性。
34 2
|
1月前
|
Java 测试技术 Spring
Java 新手入门:依赖注入的 N 种姿势,总有一款适合你!
Java 新手入门:依赖注入的 N 种姿势,总有一款适合你!
30 2