首页 > 编程语言 >Java核心API——io类

Java核心API——io类

时间:2024-08-25 23:22:16浏览次数:11  
标签:Java 读取 fos 00000000 00000001 dat int API io

 程序的输入与输出

我们先来认识一下什么时在程序中输入与输出

输入是从外界到程序中的方向,是我们程序用于获取外界信息的过程,是"读"的过程 

输出是从程序到外界的方法,是我们程序向外界发送信息的过程,是"写"的过程

java.io.InputStream与OutputStream

输入流与输出流

这里的流相当于是程序与外界相连的一根管道,用于传输数据.而数据就是字节(2进制)

InputStream和OutputStream是两个超类,抽象类. java中实际用于读写数据的流都继承自他们.

文件流

java.io.FileInputStream和FileOutputStream 这两个流就继承自InputStream和OutputStream 这两个流是用于连接我们程序和文件之间的管道,读写文件数据(读写硬盘)的目录要存在

输出OutputStream

 FileOutputStream是用于连接程序与程序的管道,负责将程序的数据发送到文件中 常用的构造方法: FileOutputStream(File file) FileOutputStream(String path) 注:如果指定的文件不存在,文件流会自动创建它.前提是该文件所在目录要存在



        FileOutputStream fos = new FileOutputStream("./fos.dat");
        /*
            OutputStream上定义的方法:
            void write(int d)
            通过当前输出流向目标位置写出1个字节,写出给定int值对应2进制的"低八位"

            fos.write(1);
            1个int值4个字节,32位2进制
            00000000 00000000 00000000 00000001
                                       ^^^^^^^^
                                       实际写出的数据

            fos.dat文件中:
            00000001

            ---------------------------------------------

            fos.write(2);
            1个int值4个字节,32位2进制
            00000000 00000000 00000000 00000010
                                       ^^^^^^^^
                                       实际写出的数据

            fos.dat文件中:
            00000001 00000010
         */
        fos.write(1);
        fos.write(2);
        System.out.println("写出完毕");
        fos.close();//流使用完毕后要关闭

输入InputStream

使用文件输入流从文件中读取字节数据

InputStream的超类中定义了读取一个字节的方法int read()

通过流读取1个字节到程序中,返回的int值对应的2进制"低八位"有效.

如果返回的int值直接表示整数-1,则表示流读取到了末尾EOF EOF:end of file

        FileInputStream fis = new FileInputStream("./fos.dat");
            fos.dat内容:
            00000001 00000010
---------------------------------------------------------------------
            第一次调用:
            int d = fis.read()

            fos.dat内容:
            00000001 00000010
            ^^^^^^^^
            读取的字节

            读取后变量d的2进制样子:
            00000000 00000000 00000000 00000001
            |---------补充24个0-------| ^^^^^^^^
                                       读取到的数据
         */
        int d = fis.read();
        System.out.println(d);//1
        /*
            第二次调用:
            d = fis.read()

            fos.dat内容:
            00000001 00000010
                     ^^^^^^^^
                     读取的字节

            读取后变量d的2进制样子:
            00000000 00000000 00000000 00000010
            |---------补充24个0-------| ^^^^^^^^
                                       读取到的数据
         */
        d = fis.read();
        System.out.println(d);//2
        /*
            第三次调用:
            d = fis.read()

            fos.dat内容:
            00000001 00000010
                               ^^^^^^^^
                               文件末尾

            读取后变量d的2进制样子:
            11111111 11111111 11111111 11111111
            |------------补充32个1-------------|

         */
        d = fis.read();//-1
        System.out.println(d);

        System.out.println("读取完毕");
        fis.close();

 




标签:Java,读取,fos,00000000,00000001,dat,int,API,io
From: https://blog.csdn.net/qishuang6/article/details/141536810

相关文章

  • 修改SpringBoot的配置文件application.yaml后启动失败
    经常碰到修改application.yaml文件之后,SpringBoot项目启动失败的,报错信息如下ConnectedtothetargetVM,address:'127.0.0.1:7105',transport:'socket'21:12:59.122[main]DEBUGorg.springframework.boot.context.logging.ClasspathLoggingApplicationListener-App......
  • java毕业设计-基于springboot+vue的在线付费自习室管理系统,基于SpringBoot+Vue的自习
    文章目录前言系统功能演示视频项目架构和内容获取(文末获取)具体实现截图用户前台管理后台架构设计MVC的设计模式基于B/S的架构技术栈具体功能模块设计系统需求分析可行性分析系统测试为什么我?关于我我自己的网站项目开发案例项目相关文件前言博主介绍:✌️码农一枚......
  • Javascript之函数式编程
    一、是什么函数式编程是一种"编程范式"(programmingparadigm),一种编写程序的方法论主要的编程范式有三种:命令式编程,声明式编程和函数式编程相比命令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算......
  • JavaScript中的内存泄露
    一、是什么内存泄漏(Memoryleak)是在计算机科学中,由于疏忽或错误造成程序未能释放已经不再使用的内存并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费程序的运行需要内存。只要程序提......
  • Ubuntu 安裝 VMware Workstation Pro
    安装下载依赖:#Ubuntu22.04及以前sudoaptinstalllibaio1#Ubuntu24.04及以后sudoaptinstalllibaio1t64sudoln-s/usr/lib/x86_64-linux-gnu/libaio.so.1t64/usr/lib/x86_64-linux-gnu/libaio.so.1打开博通产品页面BroadComVMwareWorkstationPro,下载......
  • Shopee虾皮api python获取商品买家评论数据信息
    此api接口可用于获取虾皮平台商品买家评论信息,目前land参数支持id、vn、my、th、sg、ph、tw(印尼、越南、马来、泰国、新加坡、菲律宾、台湾)。若有需要,请点击文末链接联系我们。详细采集页面如下https://shopee.tw/%E9%99%8D%E5%83%B9%E5%85%8D%E9%81%8B%E4%B8%AD%F0%9F%94%A5......
  • Shopee虾皮api python获取虾皮购物平台的商品数据信息 数据采集
    虾皮购物(英语:Shopee)是一个电商平台,总公司设在新加坡,归属于SeaGroup(之前称之为Garena),该企业于2009年由李小冬(ForrestLi)创办。虾皮购物于2015年初次在新加坡推出,现阶段已拓展到马来西亚、泰国、印度尼西亚、越南和菲律宾。虾皮购物为全球华人地区的客户提供线上购物和销售......
  • 基于Java的驾校信息管理系统设计与实现(论文+源码)_kaic
    ​ 摘  要随着社会的发展,车辆越来越多,计算机的优势和普及让驾校管理系统的开发变得越来越有必要。因此,本系统通过使用Windows操作系统,采用Java语言和SpringBoot框架进行搭建与编写,前端技术使用Vue,数据库使用MySQL,数据库工具使用Navicat,开发工具选择IDEA。本篇论文通过进......
  • 07-图5 Saving James Bond - Hard Version(C)
     哈哈,我是真的服了,写了好几天结果给我个这,气死我了,果然还有很大的进步空间。如果有c测试点4,就好了。又写了一天,是真解决不了了,这个问题等我明白一定来解答哈哈,测试点提示内存(KB)用时(ms)结果得分0sample1多条最短路,同一点有多路,最近点无路,多连通1841答案正确15/151s......
  • 基于Java的小区物业管理系统APP的设计与实现(论文+源码)_kaic
    ​摘 要小区物业管理系统是现代社会中非常热门的软件,伴随着社区规模的不断扩大和住户的不断增多,本系统的主要目的是辞别帐本以及传统的单一数据管理系统,快捷的保存用户各种数据信息。本系统针对Java系统展开,使用Java、SpringBoot框架以及MySQL等技术帮助开发。主要实现......