




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Lesson7I/O主讲人:孙鑫
File类一个File类的对象,表示了磁盘上的文件或目录。File类提供了与平台无关的方法来对磁盘上的文件或目录进行操作。
流式I/O流(Stream)是字节的源或目的。两种基本的流是:输入流(InputStream)和输出流(OutputStream)。可从中读出一系列字节的对象称为输入流。而能向其中写入一系列字节的对象称为输出流。
流的分类节点流:从特定的地方读写的流类,例如:磁盘或一块内存区域。过滤流:使用节点流作为输入或输出。过滤流是使用一个已经存在的输入流或输出流连接创建的。
InputStream三个基本的读方法abstractintread():读取一个字节数据,并返回读到的数据,如果返回-1,表示读到了输入流的末尾。intread(byte[]
b):将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。intread(byte[]
b,int
off,int
len):将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。off指定在数组b中存放数据的起始偏移位置;len指定读取的最大字节数。其它方法longskip(long
n):在输入流中跳过n个字节,并返回实际跳过的字节数。intavailable():返回在不发生阻塞的情况下,可读取的字节数。voidclose():关闭输入流,释放和这个流相关的系统资源。voidmark(int
readlimit):在输入流的当前位置放置一个标记,如果读取的字节数多于readlimit设置的值,则流忽略这个标记。voidreset():返回到上一个标记。booleanmarkSupported():测试当前流是否支持mark和reset方法。如果支持,返回true,否则返回false。
java.io包中InputStream的类层次InputStreamStringBufferInputStreamFileInputStreamByteArrayInputStreamFilterInputStreamObjectInputStreamPipedInputStreamSequenceInputStreamLineNumberInputStreamDataInputStreamBufferedInputStreamPushbackInputStream
OutputStream三个基本的写方法abstractvoidwrite(int
b):往输出流中写入一个字节。voidwrite(byte[]
b):往输出流中写入数组b中的所有字节。voidwrite(byte[]
b,int
off,int
len):往输出流中写入数组b中从偏移量off开始的len个字节的数据。其它方法
voidflush():刷新输出流,强制缓冲区中的输出字节被写出。
voidclose():关闭输出流,释放和这个流相关的系统资源。
java.io包中OutputStream的类层次OutputStreamFileOutputStreamByteArrayOutputStreamFilterOutputStreamObjectOutputStreamPipedOutputStreamPrintStreamDataOutputStreamBufferedOutputStream
基本的流类FileInputStream和FileOutputStream
节点流,用于从文件中读取或往文件中写入字节流。如果在构造FileOutputStream时,文件已经存在,则覆盖这个文件。BufferedInputStream和BufferedOutputStream
过滤流,需要使用已经存在的节点流来构造,提供带缓冲的读写,提高了读写的效率。DataInputStream和DataOutputStream过滤流,需要使用已经存在的节点流来构造,提供了读写Java中的基本数据类型的功能。PipedInputStream和PipedOutputStream
管道流,用于线程间的通信。一个线程的PipedInputStream对象从另一个线程的PipedOutputStream对象读取输入。要使管道流有用,必须同时构造管道输入流和管道输出流。
JavaI/O库的设计原则Java的I/O库提供了一个称做链接的机制,可以将一个流与另一个流首尾相接,形成一个流管道的链接。这种机制实际上是一种被称为Decorator(装饰)设计模式的应用。通过流的链接,可以动态的增加流的功能,而这种功能的增加是通过组合一些流的基本功能而动态获取的。我们要获取一个I/O对象,往往需要产生多个I/O对象,这也是JavaI/O库不太容易掌握的原因,但在I/O库中Decorator模式的运用,给我们提供了实现上的灵活性。
I/O流的链接FileInputStreamBufferedInputStreamDataInputStream数据DataOutputStreamBufferedOutputStreamFileOutputStream数据从文件中获取输入字节增加了缓冲的功能增加了读取Java基本数据类型的功能InputStreamChainOutputStreamChain可以往输出流中写入Java基本数据类型提供数据写入到缓冲区的功能将数据写入到文件中
Reader和WriterJava程序语言使用Unicode来表示字符串和字符。Reader和Writer这两个抽象类主要用来读写字符流。
java.io包中Reader的类层次ReaderBufferedReaderCharArrayReaderFilterReaderPipedReaderStringReaderFileReaderLineNumberReaderPushbackReaderInputStreamReader
java.io包中Writer的类层次WriterBufferedWriterCharArrayWriterFilterWriterPipedWriterPrintWriterFileWriterOutputStreamWriterStringWriter
字符集的编码ASCII(AmericanStandardCodeforInformationInterchange,美国信息互换标准代码),是基于常用的英文字符的一套电脑编码系统。我们知道英文中经常使用的字符、数字符号被计算机处理时都是以二进制码的形式出现的。这种二进制码的集合就是所谓的ASCII码。每一个ASCII码与一个8位(bit)二进制数对应。其最高位是0,相应的十进制数是0-127。如,数字“0”的编码用十进制数表示就是48。另有128个扩展的ASCII码,最高位都是1,由一些制表符和其它符号组成。ASCII是现今最通用的单字节编码系统。GB2312:GB2312码是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集-基本集》。主要用于给每一个中文字符指定相应的数字,也就是进行编码。一个中文字符用两个字节的数字来表示,为了和ASCII码有所区别,将中文字符每一个字节的最高位置都用1来表示。GBK:为了对更多的字符进行编码,国家又发布了新的编码系统GBK(GBK的K是“扩展”的汉语拼音第一个字母)。在新的编码系统里,除了完全兼容GB2312外,还对繁体中文、一些不常用的汉字和许多符号进行了编码。ISO-8859-1:是西方国家所使用的字符编码集,是一种单字节的字符集,而英文实际上只用了其中数字小于128的部分。
字符集的编码Unicode:这是一种通用的字符集,对所有语言的文字进行了统一编码,对每一个字符都用2个字节来表示,对于英文字符采取前面加“0”字节的策略实现等长兼容。如“a”
的ASCII码为0x61,UNICODE就为0x00,0x61。UTF-8:Eight-bitUCSTransformationFormat,(UCS,UniversalCharacterSet,通用字符集,UCS是所有其他字符集标准的一个超集)。一个7位的ASCII码值,对应的UTF码是一个字节。如果字符是0x0000,或在0x0080与0x007f之间,对应的UTF码是两个字节,如果字符在0x0800与0xffff之间,对应的UTF码是三个字节。
RandomAccessFileRandomAccessFile类同时实现了DataInput和DataOutput接口,提供了对文件随机存取的功能,利用这个类可以在文件的任何位置读取或写入数据。RandomAccessFile类提供了一个文件指针,用来标志要进行读写操作的下一数据的位置。
对象序列化将对象转换为字节流保存起来,并在日后还原这个对象,这种机制叫做对象序列化。将一个对象保存到永久存储设备上称为持续性。一个对象要想能够实现序列化,必须实现Serializable接口或Externalizable接口。
对象序列化当一个对象被序列化时,只保存对象的非静态成员变量,不能保存任何的成员方法和静态的成员变量。如果一个对象的成员变量是一个对象,那么这个对象的数据成员也会被保
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 黑龙江省大庆市2025-2026学年高三上学期第一次月考化学试卷
- 广东省中山市纪雅学校2024-2025学年七年级下学期数学期中试卷(含答案)
- 2024-2025学年江苏省扬州市高一(下)期末物理试卷(含答案)
- 水体生态系统中污染物生物富集与迁移机制研究-洞察及研究
- 边防与国防课件
- 边塞情景名师课件
- 基于拓扑优化的切割式Ⅴ带截面几何参数多目标协同设计方法突破
- 基于区块链技术的三氯苯产业链碳足迹追溯与合规性验证难点突破
- 基于AI视觉识别的分汁精度动态补偿算法在复杂工况下的适用性验证
- 地质构造突变区凿岩参数实时反馈系统与岩体损伤演化耦合研究
- 社会统计学-全套课件
- 打印版唐能通
- 物流公司道路运输许可证申请资料范文
- 分公司总经理管理手册
- 六年级上册英语试题Unit1 I go to school at 8:00. 阶段训练一-人教精通版-(无答案 )
- 择菜洗菜和切菜
- (完整版)湘教版地理必修一知识点总结
- [中天]香港置地北郡商业施工策划(共172页)
- 销售人员技能或能力分级定义表一
- (高清正版)T_CAGHP 006—2018泥石流灾害防治工程勘查规范(试行)
- 电镀技术:锌合金电镀与退镀
评论
0/150
提交评论