java输入输出PPT文档资料_第1页
java输入输出PPT文档资料_第2页
java输入输出PPT文档资料_第3页
java输入输出PPT文档资料_第4页
java输入输出PPT文档资料_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,java.io package,Java的输入输出,2,JAVA的输入/输出,程序经常需要从外部获取数据或者向外部输出数据。 位置:磁盘、网络、内存、另一个程序 形式:对象、字符、文本文件、声音、图形 Java中,输入与输出(I/O)是通过流进行的。它的特点是数据的发送和获取都是沿数据顺序进行的。 流模型建立在从某个数据源到数据池的数据传输基础上(from source to sink),也就是说把不同的输入/输出源(键盘,文件,网络连接)等抽象表示为“流”。 两类基本的流: 输出流,只能向其写出数据,而不能从中读取数据。 输入流,只能从中读取数据,而不能向其写出数据,3,流编程基础,按流

2、的数据单位大小分字符流和字节流。 字节流(8位byte流),主要来传输二进制数据:如声音、图像、对象 字符流(16位char),可用来处理Unicode 举例:ReadFile1.java,4,InputStream i args.length; i+ ) 4 System.out.println(args + i + = + argsi); 5 6 7 /运行程序TestCommandLine.java java TestCommandLine lisa bily Mr Brown /输出结果: args0 = lisa args1 = bily args2 = Mr Brown,20,21

3、,java字符编码,java字符编码在java应用程序特别是web的程序中,经常遇到字符的编码问题。为了防止出现乱码,首先需要了解java是如何处理字符的,这样就可以有目的地在输入/输出环节中增加必要的转码。其次,由于各种服务器有不同的处理方式,还需要多做实验,确保使用中不出现乱码。 String str=”中”; byte bytes = str.getBytes(); bytes = str.getBytes(“ISO-8859-1”);,22,String str=”中”; 语句:将一个只含有一个字符“中”的字符串文字量赋给String类的一个对象str, “中”是按照操作系统默认编码方

4、式进行编码,在中文windows系统中通常是“GBK”,“中”在GBK编码中是0 xD6D0,在将该字符赋给str时,Java会对该字符串进行编码转换,即将GBK编码方式的“中”转换成Unicode编码方式的“中”,Unicode编码方式“中”的编码是0 x4E2D,所以str在程序运行期间在内存中的二进制表示成16进制就是0 x4E2D,23,byte bytes = str.getBytes();,语句:获得str字符串的二进制形式。getBytes(String encoding)方法需要指定编码方式,表示获得该字符串在何种编码方式中的二进制形式。此语句中没有设置参数,表示采用操作系统默

5、认的编码方式,即此处获得的bytes是“中”在GBK编码中的二进制形式,即bytes0=0 xD6, bytes1=0 xD0,24,bytes = str.getBytes(“ISO-8859-1”);,语句:该语句与语句的区别就是指定了编码方式,此处指定的是ISO-8859-1,即通常所说的Latin-1,该编码采用8bit对字符编码,所以编码空间中只有256个字符。该编码中只包含了基本的ASCII码和一些扩展的其它西欧字符,所以该字符集中不可能包含中文的“中”字,也就是说Java虚拟机无法在ISO-8859-1编码集中找到“中”字对应的编码,针对这种情况,就只返回一个问号(?,0 x3f

6、)字符,所以此时bytes.length只有1,且bytes0=0 x3f,25,编码方式的简介String序列化成byte数组或反序列化时需要选择正确的编码方式。如果编码方式不正确,就会得到一些0X3F的值。常用的字符编码方式由ISO8859-1,GB2312,GBK,UTF-8/UTF-16/UTF-32. ISO8859-1用来编码拉丁文,它由单字节(0-255)组成。 GB2312GBK用来编码简体中文,由单字节和双字节混合组成。最高位为1的字节和下一个字节构成一个汉字,最高位为0的是ASCII码。 UTF-8/UTF-16/UTF-32是国际标准Unicode编码方式。用的最多的是U

7、TF-8,主要是因为它在对拉丁文编码时节约空间,26,三、J2SE中相关的函数Stringstr=“英”;/取得GB2312编码的字节bytebytesGB2312=str.getBytes(“GB2312”);/取得平台缺省编码的字节(solaris为ISO8859-1,windows为GBK)bytebytesDefault=str.getBytes();/用指定的编码将字节转换成字符串String(bytebytes, Charsetcharset) /用指定的编码从字节流里面读取字符InputStreamin=xxx;InputStreamReaderreader=InputStrea

8、mReader(in,GB2312);charaChar=reader.read(,27,用指定的编码从字节流里面读取字符Input/OutputStreamReader,从该类的构造器可以看出(以输入为例): public InputStreamReader(InputStream in) public InputStreamReader(InputStream in, String charset) /指定字符编码方式 例如:文件Hello.txt采用了UTF8编码方式 new InputStreamReader ( new FileInputStream (“Hello.txt”),” UTF8”,28,举例,编写一段java Application程序,从一个文件in.txt中读取内容,再将它写到文件out.txt中。in.txt采用本地平台默认的字符编码,而out.txt采用和本地平台不同的字符编码UTF8。 MyReaderWriter.java,29,Java编码,Java字符编码在内部,Java虚拟机总是操作“单一码”数据。然而,在Java虚拟机接收数据或发送数据时,Java虚拟机将数据转换为其他编码。、使用任何除java.io.InputStreamReader、java.io.FileReader、jav

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论