1.
输入流和输出流以字节为单位读取,抽象类是
InputStream
、
OutputStream
。
2.
抽象类
Reader
、
Writer
的读入和写出操作都是基于两字节的
Unicode
码元的。
3.
InputStream
类有一个抽象方法
read
,该方法读入一个字节,并返回读入的字节,或者在遇到输入源结构末尾的时返回
-1
。所有的输入类都必须覆盖这个方法。
4.
OutputStream
类有一个抽象方法
write
,该方法输出一个字节。同样所有的输出类都必须覆盖这个方法。
5.
read
和
write
方法在执行时都将阻塞,直至字节确实被读入或写出。
6.
available
方法可以去检查当前可用于读入的字节数量
7.
完成读写操作时,应该调用
close
方法来关闭它,目的是释放操作系统的资源。
Flush
方法用于清空输出流。
8.
java
提供了众多基本的
InputStream
和
OutputStream
类导出的类,这些类可以处理那些常用格式的数据,而不只是在字节级别上表示的数据。
9.
JDK5
引入了
Closeable
、
Flushable
、
Readable
和
Appendable
四个接口,其中只有
Writer
实现了
Appendable
接口
10.
使用
System.getProperty(“user.dir”)
来获得用户工作目录
11.
JAVA
IO
使用了
装
饰
(
Decorator
)模式
,可以将几个输入或者输出流的功能组合到一起。比如我们想使用缓存机制,以及用于文件的数据输入,要实现这个功能,应该如下方法来写:
DataInputStream
din=new DataInputStream(new BufferedInputStream(new FileInputStream(“employee.dat”)))
12.
输入流的预先预览可以用
PushbackInputStream
类来实现。如果不是期望的值可以将读入的字节回推到输入流中
13.
OutputStreamWriter
类将使用选定的字符编码方式,把
Unicode
字符流转换为字节流。相反地,
InputStreamReader
类将包含字节的输入流转换为可以产生
Unicode
字符的读入器
14.
以二进制格式写出数据,需要使用
DataOutputStream
。以文本格式写出数据,需要使用
PrintWriter
15.
文本格式数据的读入在
JDK5.0
之前惟一方式就是
BufferedReader
类,
JDK5.0
之后可以使用
Scanner
类来实现。建议使用
Scanner
类。
16.
Java SE 1.4
开始引入的
java
.
nio
包用引入的
Charset
类统一了对字符集的转换
17.
字符集建立了两字节
Unicode
码元序列与使用本地字符编码方式的字节序列之间的映射。
18.
本地编码方式模式不能表示所有的
Unicode
字符,如果某个字符不能表示,它将被转换成?。
19.
二进制文件的写出可以使用实现了
DataOutput
接口的
DataOutputStream
,写入使用实现了
DataInput
接口的
DataInputStream
20.
RandomAccessFile
类可以在文件中的任何位置查找或写入数据。在打开随机访问文件时,只用于读入或者同时用于读写时,我们可以通过使用字符串“
r
”或者“
rw
”作为构造器的第二个参数来指定这个选项。
21.
在
java
中可以使用
ZipInputStream
来读入
ZIP
文档,浏览压缩文件中单独的项的时候可以使用
getNextEntry
方法就可以返回一个描述这些项的
ZipEntry
类型的对象。典型读取
ZIP
文件的代码:
ZipInputStream zin = new ZipInputStream(new FileInputStream(zipname));
ZipEntry entry;
while((entry = zin.getNextEntry) != null){
// Analyze entry
//Read the contents of zin;
zin.closeEntry();
}
zin.close();
22.
在
java
中写出到
ZIP
文件用
ZipOutputStream
,
而对于你希望放入到
ZIP
文件中的每一项,都应该创建一个
ZipEntry
对象,并将文件名传递给
ZipEntry
的构造器,它将设置其他诸如文件日期和解压方法等参数。如果需要,你可以覆盖这些设置。然后,你需要调用
ZipOutputStream
的
putNextEntry
方法来开始写出新文件,并将文件数据发送到
ZIP
流中。当完成时,需要调用
closeEntry
。
FileOutputStream fout = new FileOutputStream(“test.zip”);
ZipOutputStream zout = new ZipOutputStream(fout);
for all files{
ZipEntry ze = new ZipEntry(filename);
zout.putNextEntry(ze);
send data to zout;
zout.closeEntry();
}
zout.close();
23.
ObjectInputStream
和
ObjectOutputStream
可以操作对象的读入和写出。但要对被存储或恢复的所有类进行修改,这些类就必须实现
Serializable
接口。
Serializable
接口没有任何方法。
24.
每个对象序列化保存不是用对象的地址,而是用一个序列号(
serial number
)保存的。所以我们把这种机制称为对象序列化。
25.
对象序列化的算法为:
l
对你遇到的每一个对象引用都关联一个序列号。
l
对于每个对象,当第一次遇到时,保存其对象数据到流中。
l
如果某个对象之前已经被保存过,那么只写出“与之前保存过序列号为
x
的对象相同”。在读回对象时,整个过程是反过来的。
l
对于流中的对象,在第一次遇到其序列号时,构建它,并使用流中数据来初始化它,然后记录这个顺序号和新对象之间的关联。
l
当遇到“与之前保存过的序列号为
x
的对象相同”标记时,获取与这个顺序号相关联的对象引用。
26.
流类关心的是文件的内容,而
File
类关心的是在磁盘上文件的存储。
File
类可以用来查询文件最后的修改时间,移除或重命名文件。
27.
为了考虑文件操作的平台可移植性问题,文件的分隔符最好用常量字符串
File.separator
形式来存储。
28.
File
对象既可以表示文件,也可以表示目录。
29.
在处理文件或者目录名时,应该总是使用
File
对象而不是字符串。这样做的好处很多,如:
File
类的
equal
方法指导某些文件系统不是大小写敏感的,或者在目录名尾部的(是无关紧要的)。
30.
在使用
File
类的
list
方法的时候,可以使用
FileNameFilter
对象作为参数来减少列表长度。而不是列出目录中所有的文件。
31.
Java1.4
引入了大量用于改进输入
/
输出处理机制的特性。它们位于
java.nio
包中,合称“新
I/O
”。主要包括一下特性
l
字符集编码器和解码器
l
非阻塞的
I/O
l
内存映射文件
l
文件加锁机制
32.
java.nio
包使内存映射变得十分简单,首先通过
FileInputStream
,
FileOutputStream
,
RandomAccessFile
类通过
getChannel
方法获得通道。通道是用于磁盘文件的一种抽象。然后通过调用
FileChannel
类的
map
方法从磁盘中获得一个
MappedByteBuffer
。一旦有了缓冲区,就可以使用
ByteBuffer
类和
Buffer
超类的方法读写数据了。缓冲区支持顺序和随机数据访问,它有一个可以通过
get
和
put
操作来推动的位置。
33.
缓冲区是由具有相同类型的数值构成的数组,
Buffer
类是一个抽象类,它有众多的具体子类,包括
ByteBuffer
,
CharBuffer
,
DoubleBuffer
,
IntBuffer,LongBuffer
和
ShortBuffer
。但要注意
StringBuffer
与这些缓冲区没有关系。在实际中常用
ByteBuffer
和
CharBuffer
。
34.
每个缓冲区都具有:
l
一个容量,它永远不能改变。
l
一个读写位置,下一个值将在此进行读写。
l
一个界限,超过它进行读写是没有意义的。
l
一个可选的标记,用于重复一个读入或写出操作。
这些值满足下面条件
0<=
标记
<=
位置
<=
界限
<=
容量
35.
使用缓冲区的主要目的是执行“写,然后读入”循环。
36.
要锁定一个文件,可以调用
FileChannel
类的
lock
或
tryLock
方法:
FileLock lock
= channel
.
lock
();
或
FileLock lock
= channel
.
tryLock();
第一个调用会阻塞直至可获得锁,而第二个调用将立即返回,要么返回锁,要么在锁不可获得的情况下返回
null
。另外也可以锁定文件的一部分。与锁定文件的方法名一样,只是传递的参数不同。
37.
文件加锁机制是依赖于操作系统的。所以应该避免使用文件夹锁。
分享到:
相关推荐
Go 学习笔记, 第 4 版 4 4.4 Struct 47 第 5 章 ⽅方法 53 5.1 ⽅方法定义 53 5.2 匿名字段 54 5.3 ⽅方法集 56 5.4 表达式 56 第 6 章 接⼝口 60 6.1 接⼝口定义 60 6.2 执⾏行机制 62 6.3 接⼝口转换 63 6.4 接⼝...
java IO流学习笔记——(2)文件字符流&字节数组流 文件字符流FileReader&FileWriter FileReader :通过字符的方式读取文件,仅适合字符文件 FileWriter :通过字节的方式写出或追加数据到文件中,仅适合字符文件 部分...
C++学习笔记---高级教程部分。博主自用。内容包含:文件和流,异常处理机制,动态内存,命名空间,模版(类模版,函数模版),预处理器,和信号处理机制。包含代码示例。
该笔记是我在mooc上看C++程序设计时做的一些笔记,因为是突发学习C++,要什么就学习什么,现在已经学到“文件输入输出流”,因为现在的项目不需要用到模板的知识,所以暂时只学到这么多,之后肯定还得学的,这个老师...
java学习笔记大全:java内容介绍 java编程可以分成三个方向: 1、java se (j2se)桌面开发 java中的基础中的基础 2、java ee (j2ee)web开发 3、java me (j2me)手机开发 java se课程介绍 java面向对象编程(基础) java...
java IO流学习笔记——(1) IO流总述 • 输入流:数据源到程序(InputStream、Reader读进来) • 输出流:程序到目的地(OutputStream、Writer写出去) 流分类 : • 节点流:可以直接从数据源或目的地读写数据 • 处理...
15. 十四•标准I/O流与文件 15-46 15.1. 对文件的操作 15-46 15.2. 处理跨平台性 15-46 15.3. 对象的序列化接口 15-47 15.4. I/O流基础 15-47 15.5. 流的分类 15-47 15.6. I/O输入输出 15-48 16. 十五•网络编程 16-...
以下是一个Python学习笔记的大纲,涵盖了从基础到进阶的内容。你可以根据自己的学习进度和理解情况,逐步填充和完善这个大纲。 Python学习笔记大纲 一、Python基础 Python简介 Python的历史 Python的特点和应用...
Java/JavaEE 学习笔记 作者在杰普学习时的学习笔记,是J2ee初学者必备手册,是大家学习J2EE开发的很好的参考笔记。 Java/JavaEE 学习笔记 内容目录: Unix 学习笔记..........7 一、Unix前言............7 二、...
pugixml 是一个比较好的开源xml操作库,支持unicode,本节代码中,演示了如何从内存,从文件,从换成,从stream流中加载文件!
FLV(Flash Video)是现在非常流行的流媒体格式,由于其视频文件体积轻巧、封装播放简单等特点,使其很适合在网络上进行应用,目前主流的视频网站无一例外地使用了FLV格式。另外由于当前浏览器与Flash Player紧密的...
开发环境搭建、语法基础、面向对象编程、类型转换、字符串处理与数学运算、控制台应用程序、变体的应用、集合与泛型、调试与单元测试、Lambda...文件与流、序列化技术、数据库访问技术、反射、网络编程、互操作性等...
开发环境搭建、语法基础、面向对象编程、类型转换、字符串处理与数学运算、控制台应用程序、变体的应用、集合与泛型、调试与单元测试、Lambda...文件与流、序列化技术、数据库访问技术、反射、网络编程、互操作性等...
1 工作流的概念 5 2 工作流的过程 7 3 Jbpm4.4介绍 7 3.1工作流引擎 8 3.2jpdl 8 3.3数据库 8 3.3.1资源库和运行时表结构 8 3.3.2历史数据库表 9 3.3.3身份认证表 9 3.4jbpm.cfg.xml 9 3.5 jbpm.hibernate.cfg.xml ...
支持更多视图技术(JSP(转译java文件,编译成class文件,才可以运行)、(模板技术,html,把数据和模板html一起以流方式输出)FreeMarker、Velocity) 基于AOP(面向切面编程)思想的拦截器机制,更易扩展(不修改源代码的...
第十四章 标准I/O流与文件.............84 第十五章 网络编程.89 Tiger学习笔记..................94 第一章 Java5.0新特性.......................94 第二章 基础知识.....96 第三章 泛型...........101 第四章 ...
1. net 的四个核心的对象 Connection 建立与特定数据源的连接 Command 对数据源执行命令 DataReader 从数据源中读取只进且只读的数据流 DataAdapter 将数据填充到DataSet中去 包含在System.Data.SqlClient命名空间中...
Java学习笔记 初识Java编程、Java基本数据类型、运算符、流程控制、数组、方法、面相对象、Java常用类库、集合、异常处理、多线程、IO流、网络编程、Java的反射机制、泛型、枚举、注解、配置文件操作、发送邮件、...
istream 输入流 ostream 输出流 iostream 输入/输出流,由上述两个类派生而得; 而iostream库中包含的主要头文件就包含fstream; 对文件操作主要设计以下3类 ifstream 文件读(输入)操作类 ofstream 文件写(输出)...