Java基础篇—IO操作

JAVA基础篇--Java 流(Stream)、文件(File)和IO 阅读详情

Java—IO操作    

    

     今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结:

        IO流主要用于硬板、内存、键盘等处理设备上得数据操作,根据处理数据的数据类型的不同可以分为:字节流(抽象基类为InPutStream和OutPutStream)和字符流(抽象基类为Reader和Writer)。根据流向不同,可以分为:输入流和输出流。  其中主要结构可以用下图来表示:                          

                                   

      


 字符流和字节流的主要区别:

       1.字节流读取的时候,读到一个字节就返回一个字节;  字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。

       2.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。

     

 IO流主要可以分为节点流和处理流两大类。

     

 一、节点流类型

       该类型可以从或者向一个特定的地点或者节点读写数据。主要类型如下:

类型字符流字节流
File(文件)
FileReader
FileWriter
FileInputStream
FileOutputSream
Memory Array
CharArrayReader
CharArrayWriter
ByteArrayInputStream
ByteArrayOutputSream
Memory String
StringReader
StringWriter
   -
Pipe(管道)
PipedReader
PipedWriter
PipedInputSream
PipedOutputSream

        
二、处理流类型
        该类型是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写,处理流的构造方法总是要带一个其他流对象作为参数,一个流对象进过其他流的多次包装,叫做流的链接。主要可以分为以下几种:
 
 1、缓冲流(BufferedInPutStream/BufferedOutPutStream和BufferedWriter/BufferedReader)他可以提高对流的操作效率。
               
              写入缓冲区对象:                 
[java]  view plain copy
  1. BufferedWriter bufw=new BufferedWriter(new FileWriter("buf.txt"));  
  
               读取缓冲区对象:                
[java]  view plain copy
  1. BufferedReader bufr=new BufferedReader(new FileReader("buf.txt"));  
         
          该类型的流有一个特有的方法:readLine();一次读一行,到行标记时,将行标记之前的字符数据作为字符串返回,当读到末尾时,返回null,其原理还是与缓冲区关联的流对象的read方法,只不过每一次读取到一个字符,先不进行具体操作,先进行临时储存,当读取到回车标记时,将临时容器中储存的数据一次性返回。
                   
          
2、转换流(InputStreamReader/OutputStreamWriter)
      该类型时字节流和字符流之间的桥梁,该流对象中可以对读取到的字节数据进行指定编码的编码转换。
      构造函数主要有:    
[java]  view plain copy
  1. InputStreamReader(InputStream);        //通过构造函数初始化,使用的是本系统默认的编码表GBK。  
  2.  InputStreamWriter(InputStream,String charSet);   //通过该构造函数初始化,可以指定编码表。  
  3.  OutputStreamWriter(OutputStream);      //通过该构造函数初始化,使用的是本系统默认的编码表GBK。  
  4.  OutputStreamwriter(OutputStream,String charSet);   //通过该构造函数初始化,可以指定编码表。  
        注意:在使用FileReader操作文本数据时,该对象使用的时默认的编码表,即
                   FileReader fr=new FileReader(“a.txt”);      与     InputStreamReader isr=new InputStreamReader(new FileInputStream("a.txt"));   的意义相同。如果要使用指定表编码表时,必须使用转换流,即如果a.txt中的文件中的字符数据是通过utf-8的形式编码,那么在读取时,就必须指定编码表,那么转换流时必须的。即:
                   InputStreamReader isr=new InputStreamReader(new FileInputStream("a.txt"),utf-8);
         
 3、数据流(DataInputStream/DataOutputStream)
          该数据流可以方便地对一些基本类型数据进行直接的存储和读取,不需要再进一步进行转换,通常只要操作基本数据类型的数据,就需要通过DataStream进行包装。
          构造方法:        
[java]  view plain copy
  1. DataInputStreamReader(InputStream);  
  2.  DataInputStreamWriter(OutputStream);  
          方法举例:          
[java]  view plain copy
  1. int readInt();//一次读取四个字节,并将其转成int值  
  2. writeInt(int);//一次写入四个字节,注意和write(int)不同,write(int)只将该整数的最低一个8位写入,剩余三个8为丢失  
  3. hort readShort();  
  4. writeShort(short);  
  5. String readUTF();//按照utf-8修改版读取字符,注意,它只能读writeUTF()写入的字符数据。  
  6.  writeUTF(String);//按照utf-8修改版将字符数据进行存储,只能通过readUTF读取。  
          注意:在使用数据流读/存数据的时候,需要有一定的顺序,即某个类型的数据先写入就必须先读出,服从先进先出的原则。
 
 
四、打印流(PrintStream/PrintWriter)
       PrintStream是一个字节打印流,System.out对应的类型就是PrintStream,它的构造函数可以接受三种数据类型的值:1.字符串路径。2.File对象 3.OutputStream
       PrintStream是一个字符打印流,它的构造函数可以接受四种类型的值:1.字符串路径。2.File对象 3.OutputStream  4.Writer  对于1、2类型的数据,可以指定编码表,也就是字符集,对于3、4类型的数据,可以指定自动刷新,当该自动刷新为True时,只有3个方法可以用:println,printf,format。
 
五、对象流(ObjectInputStream/ObjectOutputStream)
        该类型的流可以把类作为一个整体进行存取,主要方法有:
        Object readObject();该方法抛出异常:ClassNotFountException。
        void writeObject(Object):被写入的对象必须实现一个接口:Serializable,否则就会抛出:NotSerializableException


从基础知识到PCB设计,打造全能硬件工程师 成为一名出色的硬件工程师需要在多个领域建立坚实的基础。从硬件基础知识、元器件学习、模拟电子电路到PCB设计,以及数字电子电路与通信,每个方面都是构建全面硬件工程师技能集的重要组成部分。通过深入学习和实践这些领域,你将能够在硬件工程领域中取得更多的成就。 阅读详情

相关推荐

Backblaze 2025全年硬盘故障率报告解读

作为长期追踪存储行业动态的科技博主,每年/季度Backblaze的Drive Stats报告都是我重点关注的核心内容——不同于厂商发布的实验室数据,Backblaze以近13年、数十万片企业级硬盘的真实运行数据为基础,其年化故障率(AFR)、寿命趋势等结论,直接反映了硬盘在严苛数据中心环境下的真实表现,无论是企业存储选型还是个人高端存储参考,都具备极高的实用价值。2025年末,Backblaze发布了第13年的年度收官报告,涵盖2025年Q4、全年及终身硬盘可靠性数据。

存储随笔 4021

Java IO 流操作详解

Java IO流提供了一种可以对数据进行输入输出的机制。可以把它比作是一条河流从源头流向目标地,由源文件输入到程序再由程序输出到目标文件。IO即Input/Output顾名思义就是数据的输入输出,在Java中指的是java.io包中的类库,提供了一系列操作数据输入与输出的类和接口。Java NIO(New IO)是JDK1.4引入的新的IO API,能够以更高效的方式进行文件、网络读写等各种I/O操作。

BXA 2500

uniapp 开发微信小程序请求问题 , 真机调试正常,开发工具正常,但是使用扫码预览接口都是不通的,发布到体验版也是请求失败

uniapp开发小程序体验版接口请求失败(真机可以)

weixin_60408555的博客 3954

java:IO流学习小结

今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结:         IO流主要用于硬板、内存、键盘等处理设备上得数据操作,根据处理数据的数据类型的不同可以分为:字节流(抽象基类为InPutStream和OutPutStream)和字符流(抽象基类为Reader和Writer)。根据流向

且听风吟的专栏 6万+

Claude + Figma MCP 实战教程

• 拥有 Figma 的 Dev 或 Full seat(专业/企业账号)权限 才能启用 Dev-Mode MCP 服务 。• MCP 是通过标准接口连接 Claude 与 Figma,效率高,但目前仍为 Beta,稳定性可能有限。3. 服务启动后,会在本地运行,比如 http://127.0.0.1:3845/mcp 。如果设置正确,会显示已连接的 figma-dev-mode-mcp-server  。• 如果多次转换复杂组件,可能需要多次选择与多次生成,建议合理拆分设计任务。

weixin_49869937的博客 4451

机械臂算法设计MATLAB|运动学动力学|轨迹规划|路径规划|Simulink

RRT为最常用的路径规划算法,还有其变种(RRT*,RRT-connect等)。RRT是一种多维空间中高效的规划方法。它以一个初始点作为根节点,通过随机采样增加叶子节点的方式,生成一个随机扩展树。随机扩展树不断增长,直到到达目的位置。**Step1:**构建多维状态空间(joint space),**Step2:**构建joint space的障碍检测算法**Step3:**在joint space应用RRT。

qq_35997213的博客 4476

java writeint_Java DataOutputStream writeInt()方法及示例

DataOutputStream类writeInt()方法writeInt()方法在java.io包中可用。writeInt()方法用于将给定的整数值作为4个字节(即32位)写入基本DataOutputStream,并且成功执行时变量计数器加4。writeInt()方法是一个非静态方法,只能通过类对象访问,如果尝试使用类名称访问该方法,则会收到错误消息。writeInt()方法在写入整数时可能会引...

weixin_39892615的博客 739

TSP:车为什么能和云端交互?

TSP:车为什么能和云端交互?

天赐好车的博客 415

Java之IO流

字符流底层还是用的字节流,字符流仅仅做字符和字节的转换!接收一个字节流,生成的一个字符流。把字节流转换为字符流。3、向流中写入字节时,不会直接写到文件,先写到缓冲区中直到缓冲区写满,BufferedOutputStream才会把缓冲区中的数据一次性写到文件里。Unicode只是定义了一个庞大的、全球通用的字符集,并为每个字符规定了唯一确定的编号,具体存储成什么样的字节流,取决于字符编码方案。5、如果是带缓冲区的流对象的close()方法,不但会关闭流,还会在关闭流之前刷新缓冲区,关闭后不能再写出。

m0_58878709的博客 554

Python入门实战:Python生物信息学编程基础

本文旨在为生物学背景的研究人员和对生物信息学感兴趣的程序员提供一个全面的Python生物信息学编程入门指南。我们将从Python基础知识开始,逐步深入到生物信息学特定的工具和技术,最终达到能够独立开发生物信息学分析程序的水平。Python编程基础生物信息学常用数据结构和算法DNA和蛋白质序列分析基因组数据处理生物信息学数据可视化Biopython库的使用实际项目案例背景介绍:概述文章目的、范围和预期读者核心概念与联系:介绍Python和生物信息学的基本概念。

AI架构师小马 1514

影像技术实战02:FFmpeg 镜头切分误检、漏检问题排查与基于场景变化的稳定分镜方案

本文介绍了基于FFmpeg的镜头切分技术在实际应用中的常见问题及解决方案。文章首先指出单纯使用select='gt(scene,0.4)'命令进行镜头检测存在误检、漏检等问题,包括黑场、字幕变化被误判为镜头切换,以及相似场景切换被漏检等情况。随后提出了一套四层架构的稳定解决方案:1)用FFmpeg提取候选镜头变化点;2)解析变化点时间和分数;3)通过后处理过滤异常点;4)按时间点切割视频片段并生成报告。文中详细展示了Python实现代码,包括场景点检测、时间间隔过滤等功能模块,为视频剪辑、影视解说等场景提供

ai技术增长的博客 402

Java基础之IO流详解及使用方式(建议收藏)

Java基础的IO流的基本知识内容详细说明与使用规则

SeeYouAgain的博客 2058

6、深入解析Microsoft 365核心服务对比与迁移策略

本文深入解析了Microsoft 365的核心服务,包括身份和设备管理、现代设备配置体验、Exchange和SharePoint的迁移策略以及Microsoft Teams的协作功能。同时探讨了迁移过程中需要考虑的安全控制措施,为组织规划和实施云迁移项目提供了全面的指导和建议。

k8s6orchestrator的博客 109

Java基础篇IO流操作总结

优快云话题挑战赛第1期 活动详情地址:活动传送门 参赛话题:Java学习记录 话题描述:可以记录一下平时学习Java中的一些知识点、心得、例题、常见的问题解决 说明: 接着上一篇文档,这一篇主要是总结对文件的操作,包括了通过FileInputStream、、FileOutputStream、FileReader、FileWriter以及处理流的一种实现对图片、文本、视频的复制 程序目录1. FileInputStream、FileOutputStream对视频,图片的复制1.2 FileReader、

weixin_44606952的博客 400

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Java基础篇之IO流,利用IO流对文件进行复制、加解密等操作

目标:理解掌握IO流 重点: 1.IO的英文全称为input(输入)、output(输出) 2.输入是指从磁盘输入到内存(读文件),输出是指从内存输出到磁盘(写文件) 3.IO流下面的结构图 4.字节流每次读取或者写入一个字节,而字符流每次读取或者写入一个字符(两个字节),通常字节流用来对图片、音频、视频等文件进行操作,而字符流用来对文本文件进行操作 5.节点流是处理流的基础,因为处理流的构造方...

Anly_jia的博客 604

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java se 6.0基础及应用案例开发,JavaSE基础篇 -- IO流的详细操作

【实例简介】本资源内详尽描述了Java基础的IO操作,包括基本的文件读取、写入、复制、分割、合并等动作,详情另可参见我的博客http://blog.youkuaiyun.com/zhongkelee/article/details/47061013【实例截图】【核心代码】08466f37-e316-4581-b3d9-7d251032c394├── day21e│ ├── bin│ │ └── u...

weixin_32867521的博客 160

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Java IO 对接流

完成功能: 将图片存到字节数组中。 字节数组写出到文件。 public class IOTest05 { public static void main(String[] args) { byte[] datas=fileToByteArray("woman.jpg"); System.out.println(datas.length); byteArrayToFile(dat...

weixin_43847681的博客 228

Java零基础学习IO流

Java IO流上机练习 目录 已知文件a.txt文件中的内容为“AAbcdea22dferwplkCC321ou1”,请编写程序读取该文件内容,要求去掉重复字母(区分大小写字母)并按照自然排序顺序后输出到b.txt文件中。即b.txt文件内容应为"abc......123..."这样的顺序输出 把指定目录下(包含子目录)的所有图片,复制到另一个指定目录下 模拟用户登录功能实现。接收用户输入的用户名和密码,然后和文件中存储的用户名、密码匹配 在d盘目录下有一个加密文件a.txt(文件里只有英文..

weixin_41098116的博客 574

Java基础 IO回顾 题目

集合+IO 部分 共40道选择题 (30*1)   单列集合的顶层接口是(    ) Map      Collection   List   Set     ArrayList类的底层数据结构是(   ) 数组结构 链表结构 哈希表结构 红黑树结构   LinkedList类的特点是(     ) 查询快

KHOST的博客 1711

8月8日 Java的IO机制

文件的创建格式: //第一种构造方式 File f1 = new File("E:\\io\\done\\io.txt");// 第一个\作为转义 //第二种构造方式 File f2 = new File("E:\\io\\done","io.txt"); //第三种构造方式 File f3 = ne...

Percy0618的博客 371

【18】JAVASE-IO专题【从零开始学JAVA】

从零开始学Java系列课程

波波烤鸭的博客 1912

java基础 IO

之前自己学习Java是跳着学的,只有碰到业务问题,我才回来学习。这次就是碰到将pdf 转成图片 预览的问题,所以来补充基础。

tengyuxin的博客 4211

第六章JavaSE基础加强篇(Java最终篇)

这一章主要讲述Java真正的高阶技术,分别为:异常、泛型、集合框架、Stream流、File、字符集、IO流框架、多线程、网络编程、Java高级技术。以上为此章节内容也是Java语言最后知识点。此章节比较长是Java语言真正的核心技术。异常是代码在编译或者执行的过程中可能出现的错误。Error:代表的系统级别错误(属于严重问题),也就是说系统一旦出现问题,sun公司会把这些问题封装成Error对象给出来。(说白了,Error是给sun公司自己用的,不是给我们程序员用的,因此我们开发人员不用管它。

2403_88453964的博客 1277

Java:IO流——基础篇

着重介绍 File 类和 IO流中的字节流(原始流)

qq_73698057的博客 1384

Java基础篇 IO流

I 表示intput,是数据从硬盘进内存的过程,称之为读。O 表示output,是数据从内存到硬盘的过程。称之为写IO的数据传输,可以看做是一种数据的流动,按照流动的方向,以内存为参照物,进行读写操作内存在读,内存在写1、节点流可以从一个特定的数据源读写数据,如:FileReader、FileWriter2、处理流(也叫包装流)是连接在以存在的流(节点流或处理流)之上,为程序提供更为强大的读写功能,更加灵活多变。如BufferReader、BufferWriter。计算机文件、文件。

分享思想,留下痕迹。 1105

Java基础篇IO流的总结

1. File类的使用 1.1 File的概念描述 1.2 File的构造器及常用方法 1.3 File的创建及常用方法 2. IO流原理及流的分类 2.1 IO流原理概述 2.2 流的分类 2.3 文件的节点流和处理流

weixin_44606952的博客 616
上一篇: Java—IO操作
下一篇: java—多线程编程 Thread
AndyChen9988
博客等级 码龄11年 276粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值