点击查看视频课程
一个程序的建立往往需要达到某些信息交换的目的,反映在计算机上就是文件之间的交流。我们的程序是怎样操作文件的?我们又该怎样从文件中读取和写入数据呢?快来这里一探究竟吧!
Java是通过File类与其完善的IO流相关基类完成的数据交换工作,在这里,你将从无到有,一步步了解、熟悉并掌握文件IO的相关开发能力,通过实战验证所得,在Java文件领域中打下一个坚实的基础。
Flie类-踏入文件的领域
当开发程序到一定程度时,我们的程序必定会与文件打交道,本节将简单介绍File类的相关内容。
【本节目标】
通过阅读本节内容,你将初步认识File类的基本功能,学会如何在Java中如何创建一个文件,并可以解决创建文件过程中可能遇到的问题。
在Java语言里面提供有对于文件操作系统操作的支持,而这个支持就在java.io.File类中进行了定义,也就是说在整个java.io包里面,File类是唯一一个与文件本身操作(创建、删除、重命名等)有关的类。如果要进行File的操作,必须要提供有完整的路径,而后可以调用相应的方法进行处理。
深入了解File类,勘破文件操作
了解了File类提供的几个基本功能后,我们还需要注意一些问题,比如文件路径分隔符、JVM文件处理流程、创建时路径注意事项等,本节将一一介绍。
【本节目标】
通过阅读本节内容,你将了解到不同的操作系统中的路径的编写方式、注意到文件操作过程中文件名应当尽可能避免重复,掌握创建单级目录和多级目录的方法,保证上级路径的存在性。
借助File类了解文件的内在美
前几节中我们了解了如何进行文件级的相关操作,现在让我们走进文件,借助File类提供的其他方法,了解文件的内部信息吧。
【本节目标】
通过阅读本节内容,你将结合具体代码,实操File类的各种获取文件信息的方法,了解可以通过File类获取到哪些信息,初步掌握文件内部信息的获取方式。
教你使用File类列出目录所有文件
学完了File类对文件的相关基本操作,现在我们来做一个列出指定目录中全部文件的案例,来进一步熟悉File类吧。
【本节目标】
通过阅读本节内容,你将结合之前所学,通过File对象的状态查询实现目录/文件的判断,并进一步借助其他方法列出目录中的全部文件。
教你使用File类批量修改文件名称
在上一节中我们实操File类,完成了对目录中文件的列出、判空清除操作,本节将接续上一节案例,实现对文件命名的批量修改。
【本节目标】
通过阅读本节内容,你将进一步掌握File类的相关方法,了解文件名称编辑的一些常见套路,实现指定目录下的文件名的批量修改操作。
文件I/O:初识流的概念
在Java标准包中与文件有直接关系的只有File类,但File类只能操作文件本身,其内部的数据是无法处理的,这时就要用到流的概念,本节将为读者介绍I/O流的相关知识。
【本节目标】
通过阅读本节内容,你将了解到操作文件内数据需要用到的技术,初步认识字节流、字符流中涉及到的几个类,掌握文件流处理的基本步骤。
字节输出流之OutputStream
了解了文件I/O的基本知识后,本节将为读者展示字节输出流的总类OutputStream,现在让我们来一起了解一下它的相关定义和相关继承关系等信息吧。
【本节目标】
通过阅读本节内容,你将了解OutputStream抽象类的相关内容,了解到其对应内容的继承关系,认识类中声明的几种方法具有的功能。
使用FileOutputStream将数据写入文件
上一节中我们了解了OutputStream的相关知识,现在让我们来一起使用其子类FileOutputStream来实现对文件内容的写入操作吧。
【本节目标】
通过阅读本节内容,你将了解到FileOutputStream类对象的几种构造方式,结合具体实例实现对文件内容的写入功能,并有意识的去关闭流对象节省系统资源。
有出有入:使用字节输入流
上一节中我们学习了字节输出流OutputStream,与之对应的还有字节输入流InputStream,本节将为读者详细介绍字节输入流相关内容与使用FileInputStream读取文件内容。
【本节目标】
通过阅读本节内容,你将了解InputStream接口相关的内容,通过几组示例图直观深刻地理解字节输入流的工作原理,学会使用FileInputStream读取文件内容。
秒懂字符输出流:Writer
在前几节中我们了解了字节输出流和字节输入流的相关定义和使用方法,但在程序运行过程中不难发现往往字符级别的操作更为常见,所以Java在JDK1.1时推出了字符流,本节将介绍字符输出流Writer。
【本节目标】
通过阅读本节内容,你将了解字符输出流Writer类的基本定义和继承关系图,了解其内的各种方法的功能,并学会使用字符输出流实现数据写入功能。
掌握字符输入流:Reader
学习过字符输出流相关的内容后,本节将为读者介绍与之对应的字符输入流的相关内容和使用方法。
【本节目标】
通过阅读本节内容,你将了解字符输入流Reader类的基本定义和继承关系图,了解其内的各种方法的功能,深刻理解字符流为中文数据处理带来的便利性,学会使用字符输入流实现数据读取功能。
一双慧眼识别字节/字符流区别
Java文件IO操作中常用的流处理类的基本信息和相关操作我们已经全部了解过,现在让我们来通过输出操作的复习总结概况字节流和字符流之间的区别吧。
【本节目标】
通过阅读本节内容,你将了解到OutputStream和Writer之间的不同,认识到输出过程中的缓冲区的存在,并能够通过对缓冲取得一些操作实现一些需求,深刻理解字符流和字节流适用于不同的使用场景。
借助转换流打通字节/字符流的关联
由于字节流和字符流各有各的优势,在大多数场景中我们往往可以使用转换流InputStreamReader和OutputStreamWriter实现两类流式数据的相互转换,本节将为读者详细介绍转换流。
【本节目标】
通过阅读本节内容,你将了解InputStreamReader和OutputStreamWriter两个类的相关内容和使用方法,并对其各个类之间的继承关系有一个比较清晰的理解,学会使用转换类完成字节流和字符流的相关转换。
实战文件流,完成文件拷贝
学习完基本的文件IO操作,本节将结合文件拷贝案例,实操代码,与读者一起一步步完成文件拷贝、文件夹拷贝等功能。
【本节目标】
通过阅读本节内容,你将从需求分析开始,到方案提出,再到具体实现,一步步完成文件拷贝的功能,并同时了解到JDK1.9为开发此类功能提供的转存方法的使用办法,完成文件、文件夹拷贝功能的开发。
教你用不同的编码标准解码字符
在Java开发过程中,有时会发现自己曾经的代码里汉字部分变成了奇形怪状的字符,这往往是由于字符的编码解码标准不统一引起的,本节将为读者介绍几种常用的编码标准。
【本节目标】
通过阅读本节内容,你将了解到几种常见的编码标准与其表达能力,知道UTF-8是最常用的编码标准,并能够通过代码查看机器的属性,学会强制使用指定的编码标准对数据进行编码或解码。
运用内存操作流实现IO操作
文件操作流能够实现对文件内容的读写操作,若是碰到了不希望产生文件的IO操作,显然是不能实现的,此时就需要用到内存操作流程。本节将为读者介绍内存操作流的相关知识。
【本节目标】
通过阅读本节内容,你将进一步了解到IO流操作的过程,了解到内存操作流相关类的继承体系,并能够借助这些类实现以内存为终端的IO操作。
使用管道流构建线程信息通道
在之前学习的几种IO流中不难发现,它们在面对线程间通信问题的时候显然无法实现IO操作,这时需要用到本节介绍的管道流来进行处理。
【本节目标】
通过阅读本节内容,你将了解到几种管道流实现类的继承关系及其相关方法的功能,并结合实例代码实现线程间的数据通信工作。
“一目十行”的RandomAccessFile类
传统的IO操作在面对超大型文件时进行读取和分析明显不能很好地完成,本节将为读者介绍java.io为开发者提供的课跳跃式读取文件内容的RandomAccessFile类。
【本节目标】
通过阅读本节内容,你将大致了解到RandomAccessFile类的作用与其处理超大型文件时的优势,了解其工作原理,学会使用类内提供的方法实现对文件的跳跃式读取和保存功能。
“有限”的OutputStream
在日常开发中,Java的标准包有时只能满足开发使用的最低标准,OutputStream便是如此。本节将为读者介绍针对OutputStream类进行自定义开发实现优化输出功能的方法。
【本节目标】
通过阅读本节内容,你将了解到OutputStream在输出操作方面有限的功能,了解到“装饰设计模式”的基本思想,学会通过对OutputStream类的定制完成对输出操作的优化。
使用打印流优化数据输出
为了弥补原始的OutputStream功能的不足,java.io包为开发者提供了打印流:PrintStream类和PrintWriter类,本节将为读者介绍其基本内容和使用方法。
【本节目标】
通过阅读本节内容,你将了解到打印流相关类的相关定义和继承关系,了解其相关功能,学会使用打印流实现数据的简单输出和格式化输出的功能。
System类助力标准IO实现
在我们日常的生活中,计算机与我们的沟通主要是通过显示器和键鼠设备来完成的,而在Java中,显示器的输出功能和键鼠设备的输入功能则是依赖于System类的支持,本节将介绍它的相关内容。
【本节目标】
通过阅读本节目标:你将了解到System类针对IO功能提供的三大系统常量in、out和err的功能和使用方法,学会使用这几个方法实现键盘输入功能和显示器输出功能。
使用缓冲输入流优化数据输入能力
本节将为读者介绍缓冲字符输入流BufferedReader类,并向读者介绍使用缓冲流的一些数据输入方面的优点。
【本节目标】
通过阅读本节内容,你将先了解到BufferedReader的继承关系,并了解到其核心方法readLine在数据输入方面带来的便利性,学会使用BufferedReader类实现键盘数据的输入和处理工作。
使用Scanner类完成数据输入
Scanner类是JDK1.5以后出现的用于解决输入流处理问题的程序类,在整体设计上优于之前版本的BufferedReader类,本节将详细介绍Scanner类的相关内容。
【本节目标】
通过阅读本节内容,你将了解到Scanner类内提供的相关方法及其功能,学会使用Scanner类输入字符串、数字、生日等信息以及使用Scanner类读取文件信息,对程序IO拥有一个较为全面的认识。
使用Serializable实现类对象序列化能力
在这个处处充斥着互联网信息的世界,无时无刻都在发生着信息、数据的传递,为了高效的、准确的使发送端和接收端之间能够正确识别数据内容,本节将介绍对象序列化接口Serializable的相关内容。
【本节目标】
通过阅读本节内容,你将了解到对象序列化接口Serializable的基本原理、作用及其实现方法,能够通过实现Serializable接口声明类对象的序列化能力。
教你快速实现类对象的序列化/反序列化
上一节中我们通过在类中实现Serializable声明该类能够序列化,本节将带领读者借助ObjectOutputStream类和ObjectInputStream类实现对象的序列化和反序列化。
【本节目标】
通过阅读本节内容,你将了解到ObjectOutputStream类和ObjectInputStream类的定义、相关方法等内容,并结合实例实现对类对象的序列化输出和反序列化读取的操作,同时了解其使用方面的部分限制。
transient:将属性脱离序列化
transient关键字是类似于static、final等关键字的修饰符,它可以使类中的属性在序列化时跳过该属性,本节将为读者介绍其相关内容与用法。
【本节目标】
通过阅读本节内容,你将了解到transient关键字的功能及使用方法,理解其出现的原因,并能在有相关需求时使用transient关键字对类内属性进行修饰使其跳过序列化。
IO实战篇:数字大小比较
本节将带着读者开发实际案例,实现对输入的数字大小的比较功能,并求出所输数字的最大值和最小值。
【本节目标】
通过阅读本节内容,你将复习Scanner的相关知识,结合工厂模式,编写数字处理相关接口并完成实现,最终实现求出输入的三个数字的最大值和最小值的功能。
IO实战篇:文件保存
本节将带着读者开发实际案例,复习File类和文件流的相关基本知识,实现对文件的新建和内容保存等操作。
【本节目标】
通过阅读本节内容,你将复习File类和文件流的相关知识,结合工厂模式,编写适当的接口和工具类实现对用户输入界面的一些优化,完成文件的相关操作与内容保存功能。
IO实战篇:字符串逆序显示
本节将带着读者开发实际案例,结合Arrays类和StringBuffer类,实现对字符串的逆序输出操作。
【本节目标】
通过阅读本节内容,你将复习Arrays类和StringBuffer类的相关知识,与之前的案例设计模式一样,通过简单的控制台菜单设计和工厂模式完成对输入字符串的追加输入和逆序显示功能。
IO实战篇:数据排序处理
节将带着读者开发实际案例,以简单基类为单位,结合Comparable接口、工厂设计模式实现对数据的排序功能。
【本节目标】
通过阅读本节内容,你将复习基类创建、Comparable接口的实现、Arrays类的使用等知识,结合新学的输入输出相关方法,编写相关接口与工厂类,初步完成对象类型数据的排序处理功能。
IO实战篇:数据排序处理深入
在上一节中我们实现了简单的输入一些数据并完成数据排序处理的功能,本节将进一步开发,使其实现将数据保存进文件并进行显示的功能。
【本节目标】
通过阅读本节内容,你将继续复习文件IO的相关内容,结合其他相关知识,对数据进行严格的结构化约束输入后实现数据的正确的处理,进而实现将数据保存进文件并能够全部显示的功能。
IO实战篇:奇偶数统计
在前几节中我们实战了很多案例,本节将带着读者开发一个较为简单的实际案例,实现对输入的数字的奇偶数字的出现次数的统计功能。
【本节目标】
通过阅读本节内容,你将进一步复习Service接口的相关内容及其实现方法,进一步掌握工厂类的写法,理解其作用与功能,编写相关代码实现对奇偶数字的统计功能。
IO实战篇:用户登录
本节将带领读者实战用户登录功能,通过输入指定的用户名和密码简单实现用户登录功能来进一步掌握IO相关的知识和其他基本知识。
【本节目标】
通过阅读本节内容,你将复习到String一些基础的操作,进一步掌握数据输入的方法,简单了解用户登录功能的基本原理和实现过程,以及程序开发过程中的代理思想。
IO实战篇:投票选举
通过前几节的实战,相信读者已经对实现java功能的基本开发过程有了一个十分清晰的理解,最后,让我们“重操旧业”,使用student类实战投票选举的功能。
【本节目标】
通过阅读本节内容,你将通过对Student类的扩展开发,复习Conparable比较相关的内容,实现排序功能以及投票数据的精确增长,结合程序菜单的设计,最终完成投票选举的功能。
持续更新...
更多Java开发课程尽在Java开发者