java字节流深入研究_第1页
java字节流深入研究_第2页
java字节流深入研究_第3页
java字节流深入研究_第4页
java字节流深入研究_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、1字节流读取中文的问题filelnuptstreamdemo.javapackage cn.itcast_01;import java.io.filel nputstream;import java.i 0oexcepti on;/*字节流读取中文可能出现的小问题:*/public class filelnputstreamdemo public static void main(string args) throws loexception /创建字节输入流对象filelnputstream fis = new filelnputstream(”a.txt”);/读取数据/ int by =

2、 0;/ while (by = fis.read() != -1) / system.out.print(char) by);/byte bys = new byte1024;int len = 0;while (len = fis.read(bys) != -1) system.out.print(new string(bys, 0, len);/释放资源fis.close();stringdemo.javapackage cn.itcast_o1;import java.io.unsupportedencodingexception;import java.util.arrays;/*

3、string(byte bytes, string charsetname):通过指定的字符集解码字节数组* byte getbytes(string charsetname):使用指定的字符集合把字符串编码为字节数 组*编码:把看得懂的变成看不懂的* string - byte*解码:把看不懂的变成看得懂的* byte - string*举例:谍战片(发电报,接电报)*码表:小本子*字符数值要发送一段文字:今天晚上在老地方见发送端:今-数值-二进制-发出去接收端:接收-二进制-十进制-数值-字符-今今天晚上在老地方见*编码问题简单,只要编码解码的格式是一致的。*/public class s

4、tringdemo public static void main(string args) throws unsupportedencodingexception string s = ”你好”;/ string - bytebyte bys = s.getbytes(); / -60, -29, -70, -61/ byte bys = s.getbytes(”gbk”); -60, -29, -70, -61/ byte bys = s.getbytes(nutf-8h);/ -28, -67, -96, -27, -91, -67system.out.pri ntln (arrays.

5、tostring(bys);/ byte - stringstring ss = new string(bys); / 你好/ string ss = new string(bys, ”gbk”); 你好/ string ss = new string(bys, ”utf8”); / ?system.out.println(ss);3默认编码转字符流inputstreamreader.javapackage cn.itcast_02;import java.io.filel nputstream;import java.i 0oexception;import java.io.inputstr

6、eamreader;/* lnputstreamreader(lnputstream is):用默认的编码读取数据* lnputstreamreader(lnputstream is,string charsetname):用指定的编码读取数据*/public class inputstreamreaderdemo public static void main(string args) throws loexception /创建对象/ inputstreamreader isr = new inputstreamreader(newfilelnputstream(/ "osw.t

7、xt");/ inputstreamreader isr = new lnputstreamreader(new filelnputstream(/ “osw.txt”),”gbk“);inputstreamreader isr = new lnputstreamreader(newfilelnputstream(“osw.txt”),”utf8”);/读取数据 / 一次读取一个字符 int ch = 0;while (ch = isr.read() != -1) system.out.print(char) ch);/释放资源isr.close();outputstreamwrit

8、er.javapackage cn.itcast_02;import java.io.fileoutputstream;import java.i 0oexception;import java.io.outputstreamwriter;/* outputstreamwriter(outputstream out):根据默认编码把字节流的数据转换为字符 流* outputstreamwriter(outputstream out,string charsetname):根据指定编码把字节 流数据转换为字符流*把字节流转换为字符流。*字符流=字节流+编码表。*/public class out

9、putstreamwriterdemo public static void main(string args) throws loexception /创建对象/ outputstreamwriter osw = new outputstreamwriter(newfileoutputstream(”osw.txt”); 默认 gbk/ outputstreamwriter osw = new outputstreamwriter(new fileoutputstream(/ "osw.txt'1), “gbk”); / 指定 gbkoutputstreamwriter o

10、sw = new outputstreamwriter(newfileoutputstream(“osw.txt”),"utf-8h); / 指定 utf-8/写数据 osw.write(h 中国”);/释放资源 osw.close();4 i n putst ream readerinputstreamreader.javapackage cn.itcast_03;import java.io.filel nputstream;import java.i 0oexcepti on;import java.io.inputstreamreader;/* inputstreamread

11、er 的方法:* int read():次读取一个字符* int read(char chs):次读取一个字符数组public class inputstreamreaderdemo public static void main(string args) throws loexception /创建对象inputstreamreader isr = new inputstreamreader(newfilelnputstream(hstringdemo.java");/ 一次读取一个字符/ int ch = 0;/ while (ch = isr.read() != -1) / s

12、ystem.out.print(char) ch);/ 一次读取一个字符数组char chs = new char1024;int len = 0;while (len = isr.read(chs) != -1) system.out.print(new string(chs, 0, len);/释放资源isr.close();outputstreamwriter.javapackage cn.itcast_03;import java.io.fileoutputstream;import java.i ooexception;import java.io.ouipuisireamwriie

13、c* ou-outsireamwsersbfj 讯-* pub=c void wme(ini 0-呦->+塑* pub=c void wmeohaecbufhjlflt苹薯肾* pub=c void wmeohar 口 cbuf5-i off5-i _enjn->+苹tffis喪®* pub=c void wme(smng 住2胡->+羽册* pub-ic void wme(sming ssini off5-i -en)丽->苹册3_* 剧醫-coseosf-ushos冈型 7* aooseo來s湧訂w®制冷型苹为越-&冈。來swdn 曲7。

14、* b_ush()>a>a型举爾-&冈.型卷 2311、pub-ic c_ass ouipuismeamwriierdemo 宀 pub-ic ss-hc void main(smn吕 args) throws -oexcepiion 宀 二些®誇b ou-outsireamwmer osw n new ouipuisireamwriiesewfi-eouipuisiream(osw21x3)二二 pub_ic void wse(i2.cjjfl->+苹二 osw.wriiera.)二 osw.wme(97)- 二甘亠十卜磬施那niltk讯富?原因是:字符=

15、2字节 /文件中数据存储的基本单位是字节。/ void flush()/ public void write(char cbuf):写一个字符数组/ char chs = 'a'/bvc'/dve'/ osw.write(chs);/ public void write(char cbuf,int off,int len):写一个字符数组的一咅b 分/ osw.write(chs,1,3);/ public void write(string str):写一个字符串/ osw.write(”我爱林青霞”);/ public void write(string s

16、tr,int off,int len):写一个字符串的一部分osw.write(”我爱林青霞”,2, 3);/刷新缓冲区osw.flush();/ osw.write(”我爱林青霞”,2, 3);/释放资源osw.close();/ java.iooexception: stream closed/ osw.write(”我爱林青霞”,2, 3);5文本内容复制到当前目录下copyfiledemo.javapackage cn.itcast_04;import java.io.filelnputstream;import java.io.fileoutputstream;import java

17、.i 0oexceptio n;import java.i on putstreamreader;import java.io.outputstreamwriter;/数据源:* a.txt -读取数据-字符转换流-inputstreamreader*目的地:* b.txt -写出数据-字符转换流-outputstreamwriter*/public class copyfiledemo public static void main(string args) throws loexception /封装数据源inputstreamreader isr = new inputstreamrea

18、der(newfilelnputstream(“a.txt”);封装目的地*需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中outputstreamwriter osw = new outputstreamwriter(new fileoutputstream(” b.txt”);/读写数据/方式1/ int ch = 0;/ while (ch = isr.read() != -1) / osw.write(ch);/方式2char chs = new char1024;int len = 0;while (len = isr.read(chs) != -1) osw

19、.write(chs, 0, len);/ osw.flush();/释放资源osw.close();isr.close();copyfiledemo2.javapackage cn.itcast_04;import java.io.filereader;import java.io.filewriter;import java.i 0oexception;/*由于我们常见的操作都是使用本地默认编码,所以,不用指定编码。*而转换流的名称有点长,所以,java就提供了其子类供我们使用。* outputstreamwriter = fileoutputstream + 编码表(gbk)* file

20、writer = fileoutputstream + 编码表(gbk)* inputstreamreader = filelnputstream + 编码表(gbk)* filereader = filelnputstream + 编码表(gbk)*/*需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中*数据源:* a.txt -读取数据-字符转换流-inputstreamreader - filereader*目的地:* b.txt -写出数据-字符转换流-outputstreamwriter - filewriter*/public class copyfilede

21、mo2 public static void main(string args) throws loexception /封装数据源filereader fr = new filereader(”a.txt”);封装目的地filewriter fw = new filewriter(,b.txtn);/ 一次一个字符i i int ch = 0;/ while (ch = fr.read() != -1) / fw.write(ch);/ 一次_个字符数组char chs = new char1024;int len = 0;while (len = fr.read(chs) != -1) f

22、w.write(chs, 0, len); fw.flush();/释放资源fw.close();fr.close();copyfiledemo3 .javapackage cn.itcast_04;import java.io.filereader;import java.io.filewriter;import java.iooexception;/*需求:把c:xa.txt内容复制到d:xb.txt中数据源:c:xa.txt - filereader*目的地:*d:xb.txt - filewriter*/public class copyfiledemo3 public static

23、void main(string args) throws loexception /封装数据源filereader fr = new filereader("c:wa.txt");封装目的地filewriter fw = new filewriter(”d:b.txt“);/读写数据/ int ch = 0;int ch;while (ch = fr.read() != -1) fw.write(ch);释放资源fw.close();fr.close();6字符缓冲流buffered demo.javaimport java.io.bufferedreader;impor

24、t java.io.bufferedwriter;import java.io.filereader;import java.io.filewriter;import java.i 0oexception;/*字符缓冲流的特殊方法:* bufferedwriter:* public void newline():根据系统来决定换行符* bufferedreader:* public string readline():次读取一行数据* 包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回null*/public class buffereddemo public static v

25、oid main(string args) throws loexception / write();read();private static void read() throws loexception /创建字符缓冲输入流对象bufferedreader br = new bufferedreader(new filereader(”bw2.txt”);/ public string readline():次读取一行数据/ string line = br.readline();/ system.out.println(line);/line = br.readline();/ syst

26、em.out.println(line);/最终版代码string line = null;while (line = br.readline() != null) system.out.pri ntln(line);w放资源br.close(); private static void write() throws loexception /创建字符缓冲输出流对象bufferedwriter bw = new bufferedwriter(new filewriter(”bw2.txt”); for (int x = 0; x < 10; x+) bw. write(” hello”

27、+ x);/ bw.write(rn);bw.newline();bw.flush();bw.close();ufferedreaderdemo.javaimport java.io.bufferedreader;import java.io.filereader;import java.i 0oexception;* bufferedreader*从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。*可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大 了。* bufferedreader(reader in)*/public class buffer

28、edreaderdemo public static void main(string args) throws loexception /创建字符缓冲输入流对象bufferedreader br = new bufferedreader(new filereader("bw.txt"):方式1/ int ch = 0;/ while (ch = br.read() != -1) / system.out.print(char) ch);/方式2char chs = new char1024;int len = 0;while (len = br.read(chs) !=

29、-1) system.out.print(new string(chs, 0, len);/释放资源br.close();bufferwriterdemo.javapackage cn.itcast_05;import java.io.bufferedwriter;import java.io.filewriter;import java.i0oexception;/可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大 了。*/public class bufferedwriterdemo public static void main(string args) throw

30、s loexception / bufferedwriter(writer out)/ bufferedwriter bw = new bufferedwriter(new outputstreamwriter(/ new fileoutputstream (hbw.txth);*字符流为了高效读写,也提供了对应的字符缓冲流。* buffered writer:字符缓冲输出流* bufferedreader:字符缓冲输入流* bufferedwriter:字符缓冲输出流*将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效 写入。bufferedwser bw h new

31、bufferedwriiersew fi_ewriier(bwix3)_bwwme(=he-_o)八 bwwme(.wor-ct)_ bw.wme(.java) bwf-ush();bwb-osesrcopyf 二 edemo java package cnicasl06import java.io.bufferedreadecimport java.io.bufferedwriiecimport java.io.fi-ereadecimporl java.io.fi-ewriiecimport java.p-oexcepiiom* i - 皿划 t3a.es-吻m世里味玛日mjim别 tsb

32、.ixi 召* -* a.ixi ; i料対磐甫 gs-npuisireamreader : fi-ereader.bufferedreader* ml-b.txt -写出数据-字符转换流-outputstreamwriter - filewriter -bufferedwriter*/public class copyfiledemo public static void main(string args) throws loexception /封装数据源bufferedreader br = new bufferedreader(new filereaderc'a.txt&quo

33、t;);封装目的地bufferedwriter bw = new bufferedwriter(new filewriter(”b.txt”);/两种方式其中的一种一次读写一个字符数组 char chs = new char1024;int len = 0;while (len = br.read(chs) != -1) bw.write(chs, 0, len);bw.flush();/释放资源bw.close(); br.close();copyfiledemo2.javapackage cn.itcast_06;import java.io.bufferedreader; import

34、java.io.bufferedwriter;import java.io.filereader;import java.io.filewriter;import java.i 0oexception;/*需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中*数据源:* a.txt 一 读取数据-字符转换流-inputstreamreader - filereader - bufferedreader*目的地:* b.txt -写出数据-字符转换流-outputstreamwriter - filewriter - bufferedwriter*/public class

35、copyfiledemo2 public static void main(string args) throws loexception /封装数据源bufferedreader br = new bufferedreader(new filereader("a.txt");封装目的地bufferedwriter bw = new bufferedwriter(new filewriter(”b.txt”);/读写数据string line = null;while (line = br.readline() != null) bw.write(li ne);bw.new

36、li ne();bw.flush();/释放资源bw.close();br.close();编码package cn.itcast_o1;import java.io.unsupportede ncodi ngexceptio n;import java.util.arrays;/举例:谍战片(发电报,接电报)*码表:小本子字符数值* string(byte bytes, string charsetname):通过指定的字符集解码字节数组* byte getbytes(string charsetname):使用指定的字符集合把字符串编码为字节数 组*编码:把看得懂的变成看不懂的* string - byte*解码:把看不懂的变成看得懂的* byte - string*要发送一段文字:今天晚上在老地方见发送端:今-数值-二进制-发出去接收端:接收-二进制-十进制-数值-字符-今今天晚上在老地方见*编码问题简单,只要编码解码的格式是一致的。*/public class stringdemo public static void main(string args) throws unsupportedencodingexception string s = ”你好”;/ string - bytebyt

温馨提示

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

评论

0/150

提交评论