首页 > 编程语言 >java-io流

java-io流

时间:2024-12-22 19:30:55浏览次数:6  
标签:java File 数据源 System io println new out

  1. 根据流的方向

    • 输入流(InputStream/Reader):从数据源读取数据到程序中。
    • 输出流(OutputStream/Writer):将数据从程序写入到目的地。
  2. 根据流处理信息的大小

    • 字节流(Byte Streams):以字节为单位处理数据,适用于所有类型的数据传输,如二进制文件。
    • 字符流(Character Streams):以字符为单位处理数据,通常用于文本数据的读写,内部会处理字符编码问题。
  3. 根据流的功能

    • 节点流(Node Streams):直接与特定的数据源或目的地相连的流,例如FileInputStreamFileOutputStreamFileReader, 和 FileWriter等。
    • 处理流(Processing Streams):在其他流之上添加功能的流,比如缓冲、过滤、转换等。常见的处理流有BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriterDataInputStreamDataOutputStreamObjectInputStreamObjectOutputStream等。

例子

输入流和输出流的例子
  • 字节流示例:
/**
     * 字节缓冲流 ,完成 图片复制
     * @param args
     */
    public static void main2(String[] args) throws IOException {
        //1.获得数据源对象:
           File filei=new File("D:\\1.png");
           File fileo=new File("E:\\new.png");
        //2.获得管道对象,同时管理数据源:
        FileInputStream fis=new FileInputStream(filei);
        FileOutputStream fos=new FileOutputStream(fileo);
        BufferedInputStream bis=new BufferedInputStream(fis);
        BufferedOutputStream bos=new BufferedOutputStream(fos);
        //3.读写:
        byte[] bys=new byte[1024*8];
        int i=bis.read(bys);
        while(i!=-1){
            bos.write(bys);
            i=bis.read(bys);
        }
        //4.关闭:先开后关,关闭高级流,低级流回自动关闭
        bos.close();
        bis.close();
        System.out.println("图片复制成功!");
    }
  • 字符流输出示例:
 /**
     * 字符流输出
     * @param args
     * @throws IOException
     */
    public static void main1(String[] args) throws IOException {
        //1.获得数据源对象:
        File file=new File("E:\\dz15\\1.txt");
        //2.获得流对象,同时连接数据源:
        FileWriter fw=new FileWriter(file,true);

        System.out.println("请输入你要存储的信息:");
        Scanner input=new Scanner(System.in);
        String str=input.next();
        while(!str.equals("exit")){
            //3.写入
            fw.write(str);
            fw.write("\n");
            fw.flush();

            System.out.println("请输入你要存储的信息:");
            str=input.next();
        }
        //4.关闭:
        fw.close();
        System.out.println("退出程序!");

    }
数据流和对象流的例子

数据流的例子

  /**
     * 数据流!
     * 对存入和取出的数据保存,数据类型!
     * @param args
     */
    public static void main3(String[] args) throws IOException {
        //控制台输入字符串,整数,小数,boolean 存入文件里,取出后,任然能做类型处理!
        Scanner input=new Scanner(System.in);
        String str=input.next();
        int i=input.nextInt();
        double dou=input.nextDouble();
        boolean boo=input.nextBoolean();
        File file =new File("E:\\dz15\\1.txt");
        FileOutputStream fos=new FileOutputStream(file);
        DataOutputStream dos=new DataOutputStream(fos);

        dos.writeUTF(str);
        dos.writeDouble(dou);
        dos.writeBoolean(boo);
        dos.writeInt(i);

       FileInputStream fis=new FileInputStream(file);
       DataInputStream dis=new DataInputStream(fis);
        System.out.println(dis.readUTF().concat("..."));
        System.out.println(dis.readDouble()+1);
        System.out.println(dis.readBoolean()?"true":"false");
        System.out.println(dis.readInt()+1);

        fis.close();
        fos.close();

    }

对象流的例子

 /**
     * 对象流:将内存里的对象(属性)---一起写入文件里。---序列化;反序列化
     * @param args
     */
    public static void main4(String[] args) throws IOException, ClassNotFoundException {

        //1.获得数据源对象:
        File file =new File("E:\\dz15\\2.txt");
        //2.获得管道对象 ,同时连接数据源:
        FileOutputStream fos=new FileOutputStream(file);
        ObjectOutputStream oos=new ObjectOutputStream(fos);
        //3.写入:
        Person person=new Person();
        person.setSal(9000.0);
        person.setAge(34);
        person.setId("23456");
        person.setName("张三");
        oos.writeObject(person);
        //4.关闭:
        oos.close();
        System.out.println("写出成功");
        System.out.println("==============");
        //2.获得管道流对象 同时关联数据源:
        FileInputStream fis=new FileInputStream(file);
        ObjectInputStream ois=new ObjectInputStream(fis);
        //3.读取:
        Person person1 = (Person)ois.readObject();
        System.out.println(person1);
        //4.关闭:
        ois.close();

    }

 

喜欢这期内容的话,别忘了点个赞,关注博主,这样就不会错过任何更新啦!还有,收藏一下,方便以后回顾哦!

标签:java,File,数据源,System,io,println,new,out
From: https://blog.csdn.net/weixin_62951914/article/details/144627886

相关文章

  • #渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based S
    免责声明本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。目录一、基于时间延迟的SQL注入概述(一)原理(二)应用场景示......
  • Transformers 框架 Pipeline 任务详解(五):表格问答(table-question-answering)
    在自然语言处理领域,表格问答是一项能够从结构化数据中提取信息的关键技术。它结合了自然语言理解和表格数据处理的能力,使得用户可以通过自然语言提问来获取表格中的特定信息。HuggingFace的Transformers框架通过其PipelineAPI提供了强大的table-question-answering功能,允许......
  • 四种多Agent范式哪种最好?用于对话任务解决的多代理大型语言模型 Multi-Agent Large La
    原文地址摘要在单个大型语言模型多年来主宰人工智能领域的时代,多智能体系统在对话任务解决中崭露头角。此前的研究虽已展现出其在推理任务和创新尝试方面的潜力,但对于其在对话范式方面的局限以及个体智能体的影响,却缺乏分析。多智能体讨论在不同复杂程度任务中的表现怎......
  • 基于Java的班级管理系统的设计与实现 毕业设计-附源码60085
    摘要班级管理是学校管理的重要组成部分,传统的班级管理方式存在效率低下、信息不及时等问题。为了解决这些问题,本文设计并实现了一个基于 Java 的班级管理系统。 本论文旨在设计并实现一个基于 Java 的班级管理系统,以提高班级管理的效率和准确性。该系统采用了SSM框架......
  • 深刻理解JAVA8新特性
    相信每一位java面试者都会问一个问题,你知道jdk1.8新特性吗?当在回答这个问题的时候,我们都会说一大堆,比如说,可以支持lambda表达式,引入Optional类让开发开始手动检查null,避免运行时候的NPE等等,可是,对于一名java从业者来说,我觉得不够,没有说到点子上,如果面试官很水,当然就让你过啦,然......
  • springboot-Java搭建的后端服务器返回前端请求结果
    访问spring.io,在上方的projects找到springInitializr,配置如下:点击下方的GENERATE下载。解压到你的workspace文件夹,然后将该位置复制,IDEA中点击左上角->打开,粘贴文件地址,选中springboottest根目录,确定。此时点信任,信任该文件夹,打开新窗口。还是左上角->setting,搜索Maven,配置......
  • CSC1001: Introduction to Computer Science
    CSC1001:IntroductiontoComputerScienceProgrammingMethodologyAssignment4Assignmentdescription:Thisassignmentwillbeworth10%ofthefinalgrade.Foreachquestion,writeyourcodeinthecorresponding.pyfile(i.e.,forquestion1,useq1.py).Once......
  • 千峰教育--Netty 再学习 1 网络模型概述(BIO、NIO、AIO)、BIO 逻辑实现及其局限性(单线程
    课程介绍1网络模型概述2Channel详解3Buffer详解4Selector详解5NIO综合案例-聊天室6AIO概念及实现 1网络编程IO模型介绍1.1BLockingIOBlockingIO也称BIO,及同步阻塞IO。Java的io包基于流模型实现,提供了FIle,FileInputStream,FileOutputStream等输入输出流......
  • Java程序打包成exe,无Java环境也能运行
    Java程序开发完成后,通常情况下以jar包的形式发布。但有时我们需要给非软件开发人员使用程序,如制作好窗体应用,把它发给没有java开发环境的人使用,此时就需要制作exe安装包。本文介绍如何将java程序制作成exe安装包,并提供有图片和三方依赖jar包的解决方案。1.安装exe制作软件制......
  • JAVA-通过大疆TSDK的API直接获取红外图片温度信息
    一、前言看过很多关于大疆红外图片用TSDK取温的方式,但是网上能搜到的大部分教程都是通过官方下载文件smple编译出来的程序来取温,如果这样做,虽然确实也能够实现目的,但不得不说,不但会降低运行速度,而且代码调用起来也麻烦。所以不如研究一下怎么直接调用他们的C++API。先说下大疆......