首页 > 编程语言 >简单了解java中的io流中的字节流

简单了解java中的io流中的字节流

时间:2023-12-09 16:36:38浏览次数:35  
标签:java 字节 read bytes 流中 io fileInputStream byte 读取

了解一下前置知识字符集,我们常见的字符集有ASCII,GBK,UTF-8

GBK中一个字需要两个字节存储

UTF-8中一个字母需要一个字节,并以0开头,一个汉字需要三个字节,与GBK不同的是,他支持的是世界文字,是一种相当通用的字符集

IDEA中的字符集在右下角可以看到,默认是utf-8,

在java中进行编码和解码非常简单

举一个小例子即可

 String a="123";
 byte[] bytes = a.getBytes();
 String b= new String(bytes);

简单来说IO流就是输入Input输出Output流

应用场景:读取文件内容,通过IO进行长久的存储数据,网络对话。

我个人最主要的体验是在写网页的时候进行Excel的导入导出,可以使用IO流完成

java.io包主要包括IO流体系,分为字节流和字符流

字节输入流InputStream,字节输出流OutputStream,字符流Reader,字符输出流Writer。他们都是抽象类

下面是创建输出流管道,并读取文件的字节数据样例

FileInputStream fileInputStream = new FileInputStream("designModel/src/main/resources/123.txt");
System.out.println(fileInputStream.read());//当读取完毕后再次读取会获得-1值,因此如果需要此方法可以使用while(x.read!=-1)作为循环

fileInputStream.close()

上述问题中由于多次与硬件进行交互,后修改读取多个字节到字节数组中,返回读取的字节数量

byte []bytes=new byte[4];
fileInputStream.read(bytes);

 当然,上述两个输入流都存在汉字乱码的问题,为此我们需要一次性读取全部字节流,方法1是通过file获取文件的length后填入read

方法2这个java8用不了

 byte []bytes=fileInputStream.readAllBytes();

下面是创建输入流管道,并以追加的方式(默认是不追加直接覆盖)

        OutputStream os=new FileOutputStream("designModel\\src\\main\\resources\\234.txt",true);
        byte []bytes="我爱你aq".getBytes();
        os.write(bytes);
        os.close();

 

标签:java,字节,read,bytes,流中,io,fileInputStream,byte,读取
From: https://www.cnblogs.com/kun1790051360/p/17890897.html

相关文章

  • Recommendation as Instruction Following: A Large Language Model Empowered Recomm
    目录概InstructRecInstructionGenerationZhangJ.,XieR.,HouY.,ZhaoW.X.,LinL.,WenJ.Recommendationasinstructionfollowing:alargelanguagemodelempoweredrecommendationapproach.2023.概通过指令跟随来利用大模型进行推荐,本文介绍了不同的指令......
  • hackhthebox intentions hard
    Thisarticlewilltalkaboutthtechnicalpointsandnottalkaboutthewholeprossthistargetmachinehasserveraltechnicalpoints.Oneiswhentheuser'sprofilepreferencesareset,thereisaninjectionpointbutitisasecondaryinjection.Need......
  • Java对象的空值判断
    以前一直被java的NPE(NullPointerException)所谓的空指针异常搞的头昏脑涨,有大佬说过“防止NPE,是程序员的基本修养。”但是修养归修养,也是我们程序员最头疼的问题之一,那么我们今天就要尽可能的利用Java8的新特性Optional来尽量简化代码同时高效处理NPE(NullPointer......
  • Java开发者的Python快速进修指南:实战之跳表pro版本
    之前我们讲解了简易版的跳表,我希望你能亲自动手实现一个更完善的跳表,同时也可以尝试实现其他数据结构,例如动态数组或哈希表等。通过实践,我们能够发现自己在哪些方面还有所欠缺。这些方法只有在熟练掌握之后才会真正理解,就像我在编写代码的过程中,难免会忘记一些方法或如何声明属性等......
  • 深入探究 Python 异步编程:利用 asyncio 和 aiohttp 构建高效并发应用
    在现代编程中,异步编程已成为处理高并发和IO密集型任务的重要方式。Python提供了强大的异步编程支持,包括asyncio库和aiohttp等框架。本文将深入探讨异步编程的概念,以及在Python中如何利用异步框架来实现高效的并发编程。1.异步编程概念异步编程允许程序在等待IO操作完成时......
  • Java执行cmd命令.并打印输出. 解决中文乱码 .
    packageorg.example;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.nio.charset.Charset;publicclassMain{publicstaticvoidmain(String[]args){try{ProcessBuilder......
  • Image Layout 和 Layout Transition
    ImageLayout和 LayoutTransition在RenderPass创建参数中需要指定RenderPass开始时和RenderPass结束时的ImageLayout也就是initLayout和finalLayout。因为不同的ImageLayout会影响到像素在内存中的组织方式。由于图形硬件的工作方式,对于Image来说线性布局往往不是性能最优的(B......
  • 【JavaSE】可变参数
    可变参数可变参数用在形参中可以接收多个数据可变参数的格式:数据类型...参数名称可变参数的特点:方便,可以不传输参数,可以传输一个或者多个,也可以传输一个数组可变参数在方法内部本质上就是一个数组注意事项:一个形参列表中可变参数只能有一个可变参数必须放在形参列表的......
  • Java流程控制-循环控制
    免责声明:java基础资料均来自于韩顺平老师的《循序渐进学Java零基础》教案,具体视频内容可以去B站观看,这些资料仅用于学习交流,不得转载用于商业活动1.循环控制1.1for循环基本语法:for(循环变量初始化;循环条件;循环变量迭代){循环操作(可以多条语句);}说明:for关键字,表示......
  • 【Base64】二进制数据编码解码(OpenSSL BIO)
    1.问题引出计算机中数据使用ascii码存储,而ascii码在128~255之间是不可见字符,网络上传输数据时往往经过多个路由设备,不同设备不同的处理方式也可能导致数据传输过程中处理出现问题。所以我们通过Base64将数据全部编码成可见字符(A-Z,a-z,0-9,+,/共64个)可以降低出错的可能。B......