版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
内容提要I/O概述字符集编码File、RandomAccessFile类I/O概述I/O指的是一个程序与其外界之间的接口。Java提供了三套机制来处理I/O操作。第一套机制采用java.io.File和java.io.RandomAccessFile类,前者用于处理文件或目录(文件夹),后者用于随机访问文件的内容。第二套机制采用流(stream)来描述。第三套采用新的I/O机制(称为NIO,其中的N就是new的首字母),是在JDK1.4中新引入的,在性能上有了大幅提高,弥补了原来I/O的不足。NIO的目的是为了让Java程序员可以实现高速I/O而无需编写自定义的本机代码。字符与编码基本概念字符字符集编码字符集字符编码字符集编码的历史汉字编码字符集编码的Java编程基本概念字符,就是文字符号,例如英文字母、汉字、标点、阿拉伯数字、数学符号等,而不管字符的表现形式如何(例如斜体、颜色、字体、点阵形式、矢量形式等)。字符集,就是字符的集合,这个集合与数学中的集合是一个概念,即集合中的元素是互异的、无序的。编码字符集,就是把字符集中每个字符赋予一个整数数字,在字符和数字之间建立了一一对应关系,这样的字符集就称为编码字符集。字符编码(也称为编码、字符编码方案),就是怎样把编码字符集的数字映射为字节序列。字符编码方案分为定长编码和变长编码两种。定长编码有ASCII、GB2312、GBK、UTF-32等,定长编码较简单,变长编码常见的有UTF-8,这种编码对常用字符使用较少的字节,对生僻字符使用较多的字节来表示,这种编码实现起来要复杂些字符集1.数字化2.字符编码编码字符集字节序列字符集编码的历史1.ASCII编码阶段2.ANSI本地化编码3.通用字符集阶段多字节标志位0:否,1:是1的个数表示:后续的字节个数10表示:是后续字节而非首字节x表示UCS编码Unicode字符范围 UTF-8字节序列(16进制)00000000-0000007F: 0xxxxxxx00000080-000007FF: 110xxxxx 10xxxxxx00000800–0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx00010000–001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx00200000–03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx04000000–7FFFFFFF:1111110x 10xxxxxx10xxxxxx10xxxxxx10xxxxxx 10xxxxxxJava使用UTF-16表示内部文本(JVM内的文本),并支持用于字符串串行化的非标准的修正UTF-8编码。汉字编码我国的第一个汉字编码是1980制定的GB23121995年中国大陆发布了《汉字内码扩展规范》,简称GBK2000年发布的GB18030是取代GBK的正式国家标准。GB18030作为Unicode3.0的GBK扩展版本,覆盖了所有Unicode编码,地位等同于UTF-8,UTF-16,是一种Unicode编码形式。字符集编码的Java处理在Java中,字符串采用Unicode编码,每个字符占用两个字节(即采用UTF-16编码),字符对应的类型为char,与编码有关的两个主要方法在类String中,如下:(1)publicbyte[]getBytes(StringcharsetName)throwsUnsupportedEncodingException将字符串用指定的编码解析成字节数组,完成从charsetName到Unicode的转换。注意该方法有重载方法。(2)publicString(byte[]bytes,StringcharsetName)throwsUnsupportedEncodingException//String的构造方法。该方法将字节数组以指定的编码标准构造成字符串,完成从Unicode到charsetName的转换。借助上面这两个方法,我们就可以在任意的两个字符编码之间进行转换了。归根到底,字符编码的转换就是字符与字节之间的转换。例程Java内部(即正在执行的程序或者JVM)采用UTF-16编码,当字符从Java内部被移到外部(文件、数据库、网络等)或者从外部移到Java内部的时候,就进行了编码转换。因此可以说,所有的编码转换就只发生在Java和OS(操作系统)的交界处,因此Java在输入输出流中提供了字符集处理机制。Java源代码也是字符,javac命令有一个参数-encoding,其含义是指定待编译的Java源代码文件所采用的字符集编码。若Java源代码文件的编码采用的不是操作系统默认的编码(中文Windows为GBK,Linux为UTF-8),则编译时必须使用参数-encoding指定正确的字符编码,编译命令如下:javac-encodingencodeNameyourfile.javaFile类File类提供了很多方法用于操作磁盘文件,可以对文件修改访问权限、删除文件、修改文件名、获取文件的路径等。File类对象就是一个在内存中的类实例对象,用以描述一个文件或目录(文件夹)。读者在使用File类时,有以下注意事项:(1)File对象实例描述了一个文件或目录,从这点说File对象和其他普通类对象一样,其创建与销毁只是在内存中创建或销毁了一个对象,不会影响其描述的磁盘文件。(2)文件路径分隔符,Windows采用\,UNIX(Linux)采用/。文件路径在程序中是一个字符串,注意到Java采用\作为转义符,故用“\\”表示Windows文件分隔符。实际上,不管对哪一种操作系统,Java都可以使用/作为文件路径分隔符,这对Java程序的跨平台带来了方便,因此建议使用/作为文件分隔符就好了。例程RandomAccessFile类RandomAccessFile类用于随机访问一个文件的内容,这与I/O流不同,I/O流读取或写入一个文件是顺序操作的。所谓随机访问是指可以随机在一个文件中进行定位并访问,RandomAccessFile提供了方法用于定位(seeking)、读(reading)和写(writing)操作。定位方法longgetFilePointer()throwsIOException,返回游标指向的当前位置。longlength()throwsIOException,返回文件的长度,单位
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文旅综合体建设项目可行性研究报告
- 印刷车间设计与建设方案
- 印刷企业油墨使用安全规范
- 智能语音技术人才培养方案
- 物流服务质量评价方案
- 危险化学品二维码追溯系统设计方案
- 物流配送中心规划设计方案
- 自然保护地访客管理规范
- 生物药市场推广方案
- 中小学体育课堂教学质量诊断报告
- 《可能性》(第1课时)教学课件
- 安装阳光房棚合同书(2025版)
- 混凝土材料使用管理制度
- 石油工程伦理学课件
- 中药冷敷技术课件教学
- 阳光家园协议书
- 无缝气钢瓶定期检验工作质量鉴定评审细则
- 2024年湖南汽车工程职业学院单招职业技能测试题库标准卷
- DB34T4957-2024单采血浆集中化检测实验室建设规范
- 仓储与物流管理培训课件
- 钳工实操试卷-共44套
评论
0/150
提交评论