---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ---------------------
对数据的操作是IO最常用的功能,在使用流的时候是有一定规律的:
流操作规律
(1)明确源和目的
- 源:输入流。InputStream Reader
- 目的:输出流。OutputStream Writer
(2)操作的数据是否是纯文本。
- 是:字符流。
- 不是:字节流。
(3)当体系明确后,在明确要使用哪个具体的对象设备。
- 通过设备来进行区分。
- 源设备:内存,硬盘,键盘。
- 目的设备:内存,硬盘,控制台。
这个步骤基本上适用于所有的流操作,
- 举例1:将一个文本文件中数据存储到另一个文件中,即复制文件。、
- 源:读取源,使用读取流。InputStream,Reader。
- 源是不是文本:是,使用Reader。
- 源设备:硬盘(上的一个文件)。Reader中操作文件的是FileReader。
- 是否需要提高效率:是,加入Reader缓冲区 BufferedReader。
- 目的:写入到目的地,使用写入流。OutputStream,Writer。
- 目的是不是纯文本:是,使用Writer。
- 目的设备: 硬盘(上的一个文件)。 Writer中操作文件的是FileWriter 。
- 是否需要提高效率:是,加入Writer 缓冲区 BufferedWriter 。
- 举例2:将键盘录入的数据保存到一个文件中。
- 源: InputStream,Reader。
- 源是不是文本:键盘录入的是字符,是文本,Reader。
- 源设备:键盘,对应的对象是System.in。
- System.in对应的是InputStream字节流,为了操作键盘的文本数据方便,转成字符流操作字符串最方便,所以把字节流转成字符流。使用Reader体系中的的InputStreamReader。
- 源需要提高效率吗?需要,用BufferedReader。
- 目的: OutputStream,Writer。
- 是否是纯文本?是, Writer。
- 设备:键盘(一个文件),使用FileWriter。
- 需要提高效率吗?是,BufferedWriter。
在IO里边还有两个很有用的转换流,InputStreamReader和OutputStreamWriter,这两个流可以使字节流和字符流之间相互转换
- InputStreamReader 可以将指定源的字符数据按照指定的编码表解码成字节数据,然后读取出来
- OutputStreamWriter 可以将需要写入目的地的字符数据按照指定的编码表存入。
结合转换流,基本上对数据的所有读取写出操作都能实现了,流的对象是非长多的,而且针对相同的一个操作不同的流对象都能通过不同的途径完成,只是复杂程度与效率高低不一样。那么我们还是要熟悉一些常用的流及他们能做的事:
- FileInputStream、FileOutputStream 可以对任意类型文件进行读取和写入的类,要配合其他缓冲流才能提高效率
- FileReader、FileWriter 只能对纯文本文件进行操作,
- BufferedReader、BufferedWriter 包装了FileReader和Filewriter的功能,并增加了缓冲区和一些方便的方法比方说readLine和newLine(),提高效率,方便调用。
- ByteArrayInputStream 可以读取一个字节数组中的数据
- ByteArrayOutputStream 在内存中创建一个可以自动增长的缓冲数组,可以通过toByteArray() 获得其装载的数据
- DataInputStream、DataOutputStream 可以直接写入或者读取java的基本数据类型,还可以读取写入UTF编码格式的字符串。
- LineNumberReader 在读取数据时,可以读取到文本数据的行数,并认为设置行号,还有一个lineNumberInputStream类,这个类是基于所读取的数据是可以充分转换成字符的。
- ObjectInputStream、ObjectOuptPutStream 可以将一个类对象写入到文件里边,然后读取出来,被操作的对象必须是实现了serializable接口的,并且私有的和被trainsient以及static修饰的成员是不可悲序列化的。
- PrintStream 可以指定打印时对字节数据进行解码的字符集。并且提供了自动刷新功能
- PrintWriter 与PriteStream用法一样,但是PrintWriter用的字符集是系统默认的,不能指定字符集。
-------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net
相关推荐
黑马程序员_毕向东_Java基础视频教程第18天-14-IO流(拷贝文本文件图例).zip
本资料包“Java-IO流高级-例题 & 例题源码 & PPT教学文档(黑马程序员详细版).rar”提供了一个深入学习Java IO流的全面资源,包含实例题目、源代码以及PPT教学材料,适合对Java IO有进阶需求的开发者。 1. **Java ...
黑马程序员_毕向东_Java基础视频教程第18天-09-IO流(文件的续写)
行时所需要的基本条件和许多 Java 基础类,例如,IO 类、GUI 控件类、网络类等。JRE 是提供给 普通用户使用的,如果你只想运行别人开发好的 Java 程序,那么,你的计算机上必须且只需安装 JRE。 JDK(Java ...
"IO-黑马程序员Java学习笔记"这个压缩包包含了关于Java IO的详细教程,可以帮助我们深入理解这个关键领域。下面将根据提供的文件名来解析可能包含的知识点。 1. **IO.md**: 这个文件很可能是Markdown格式的学习...
在这个“黑马程序员_毕向东_Java基础视频教程第18天-12-IO流(文本文件读取练习)”中,毕向东老师将深入讲解如何使用Java IO流来读取文本文件。Java IO流提供了多种类和方法,使得开发者可以灵活高效地处理输入和输出...
本教程《黑马程序员_毕向东_Java基础视频教程第18天-13-IO流(拷贝文本文件)》专注于讲解如何利用IO流来实现文本文件的复制操作。这个过程涉及到了对文件读取、数据缓冲以及写入等基础知识,对于初学者来说是理解和...
### 黑马程序员入学Java精华总结 #### 一、Java概述与基础知识 1. **何为编程?** - 编程是指通过编写计算机能够理解的指令来解决问题或完成特定任务的过程。这些指令通常被组织成算法,并使用某种编程语言实现。...
暗示这门课程可能包含一系列视频教程,首个文件"01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.avi"很可能是课程的开篇,详细阐述了课程的价值、目标以及教学计划,帮助学员了解学习路径和预期收获。...
本资源包含的是Java-IO流的基础例题、源码及PPT教学文档,适合初学者和进阶者深入理解Java IO流的使用。 一、Java IO流概述 Java IO流分为字节流和字符流两大类,字节流处理的是8位的字节数据,而字符流处理的是16...
"黑马程序员java基础试题、笔记"这个压缩包资源为Java初学者和希望加入"黑马程序员"培训课程的学员提供了丰富的学习材料。这些资源包括面试问题合集、整理的资料、Android面试题、学员入学面试总结、面试技巧、必须...
Java的IO流是Java编程语言中的重要组成部分,它主要用于数据的输入和输出操作。在Java中,IO流被设计为处理任何类型的数据,包括字符、字节甚至对象。本练习旨在帮助初学者理解和掌握Java IO流的基础知识。 一、IO...
《黑马程序员面试宝典(java)2018版》是一本专门为Java开发者准备的面试指南,涵盖了大量在面试过程中可能遇到的问题和知识点。这本宝典由黑马程序员机构精心编纂,汇集了近万名学员的实际面试经验,为求职者提供了...
Java 第二阶段提升编程能力【IO流】---- 代码 Java 第二阶段提升编程能力【IO流】---- 代码 Java 第二阶段提升编程能力【IO流】---- 代码 Java 第二阶段提升编程能力【IO流】---- 代码 Java 第二阶段提升编程能力...
总的来说,黑马程序员的Java基础辅导班教程旨在通过第14天的课程,使学员对Java语言有更深入的理解,掌握核心概念和技术,为进一步的Java学习打下坚实的基础。通过不断的实践和练习,学员将能够运用所学知识解决实际...
在本教程“黑马程序员_毕向东_Java基础视频教程第18天-11-IO流(文本文件读取方式二)”中,主讲人毕向东将深入讲解如何使用Java有效地读取文本文件,特别是第二种常用的方法。以下是关于Java IO流和文本文件读取的...
14. **输入/输出流**:Java的IO流系统用于处理数据的输入和输出,包括文件操作、网络通信等。 15. **多线程**:Java内置对多线程的支持,通过Thread类或Runnable接口实现并发执行,提高程序性能。 16. **反射机制*...
《黑马程序员毕向东Java基础课堂完整版文档》是一份全面且深入的Java学习资源,由知名教育机构黑马程序员的讲师毕向东倾力打造。这份资料涵盖了从Java编程基础到高级特性的全过程,旨在帮助初学者系统地掌握Java编程...
protoc-gen-grpc-java-1.40.0-osx-aarch_64 mac arm芯片平台grpc生成java的支持。官网上面没有,这是基于源码编译生成的。 pom.xml:(protoc-gen-grpc-java-1.40.0.pom) <?xml version="1.0" encoding="UTF-8"?> ...
### Java IO流基础知识点 #### 一、IO流概述 - **定义**:在Java中,IO流(Input/Output Streams)是用来处理输入输出的基本工具。流是一种有序的数据集合,通常涉及从源到目的地的数据传输过程。源可以是文件、...