马士兵J2SE流IO个人学习笔记_第1页
马士兵J2SE流IO个人学习笔记_第2页
马士兵J2SE流IO个人学习笔记_第3页
马士兵J2SE流IO个人学习笔记_第4页
马士兵J2SE流IO个人学习笔记_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、第八章 流1Java流式输入/输出原理2Java流类的分类3输入,输出流类4常见的节点流(常见:文件流,分为:字符,字节流/输入,输出流)和处理流(常见:缓冲流,分为)4.1文件流4.2缓冲流5 数据流6 转换流7 Print流8 Object流2010年3月31日星期三, 19:54:28 2010年4月2日 星期五20:00:271. java流式输入输出流原理 文件(桶) - 流(管道) - 程序2. java输入输出流分类 (输入输出相对于程序来说的,而不是文件)Java.io包中定义了多个流类型(类或者抽象类)来实现输入/输出功能:可以不按数据流的方向不同分为输入流和输出流按处理数据

2、单位不同分为字节流和字符流按功能不同分为节点流和处理流J2SDK所提供的所有流类型位于包Java,io内都分别继承自以下四中抽象流类型。字节流(Stream)字符流(两个字节)输入流InputStreamReader输出流OutputStreamWriter3. 输入/输出流类4个1 InputStream 继承自InputStream的流都是用于向程序中输入数据,且数据的单位为字节(8bit),下图深色为节点流,浅色为处理流InputStream的基本方法2 OutputStream 继承自outputStream的流都是用于程序中输入数据,且数据的单位为字节(8bit),下图深色为节点流,

3、浅色为处理流OutputStream的基本方法3 Reader 继承自Reader的流都是用于向程序输入数据,且数据的单位为字节(16bit),下图深色为节点流,浅色为处理流Reader的基本用法4 Writer 继承自Writer的流都是用于程序中输入数据,且数据的单位为字节(16bit),下图深色为节点流,浅色为处理流writer的基本用法4. 常见节点流/处理流4.1 节点流类型(直接读取写入.不经过处理)4.1.1 常见节点流:文件流例子:IO TestFileInputStream.java 字节流按一个字节一个字节读取文件import java.io.*;public class

4、TestFileInputStream public static void main(String args) int b = 0; FileInputStream in = null; try in = new FileInputStream(F:My WorkspaceJavaIOTestFileInputStream.java); catch (FileNotFoundException e) System.out.println(找不到指定文件); System.exit(-1); try /读数据 long num = 0; while(b=in.read()!=-1)/读一个字节

5、到变量b,b=-1表示读取完成 System.out.print(char)b); num+;/计数 in.close(); System.out.println(); System.out.println(共读取了 +num+ 个字节); catch (IOException e1) System.out.println(文件读取错误); System.exit(-1); IOTestFileOutputStream.java 字节流复制文件import java.io.*;public class TestFileOutputStream public static void main(S

6、tring args) int b = 0; FileInputStream in = null; /声明in为文件输入流(管道) FileOutputStream out = null;/声明out为文件输流(管道) try in = new FileInputStream(F:/My Workspace/Java/IO/TestFileOutputStream.java); out = new FileOutputStream(F:/My Workspace/Java/IO/copy TestFileOutputStream.java); while(b=in.read()!=-1) ou

7、t.write(b); in.close(); out.close(); catch (FileNotFoundException e2) System.out.println(找不到指定文件); System.exit(-1); catch (IOException e1) System.out.println(文件复制错误); System.exit(-1); System.out.println(文件已复制); IOTestFileReader.java 字符流按一个字符一个读取文件import java.io.*;public class TestFileReader public s

8、tatic void main(String args) FileReader fr = null; int c = 0; try fr = new FileReader(d:sharejavaioTestFileReader.java); int ln = 0; while (c = fr.read() != -1) /char ch = (char) fr.read(); System.out.print(char)c); /if (+ln = 100) System.out.println(); ln = 0; fr.close(); catch (FileNotFoundExcepti

9、on e) System.out.println(找不到指定文件); catch (IOException e) System.out.println(文件读取错误); IO TestFileWriter.java 字符流输出大多国家的数文字import java.io.*;public class TestFileWriter public static void main(String args) FileWriter fw = null; try fw = new FileWriter(F:My WorkspaceJavaIOunicode.txt); for(int c=0;c=500

10、00;c+) fw.write(c); fw.close(); catch (IOException e1) e1.printStackTrace(); System.out.println(文件写入错误); System.exit(-1); IOTestFileWriter2.java 字符流复制文件 并且每个字符后面多输出一个“|”字符import java.io.*;public class TestFileWriter2 public static void main(String args) int b = 0; FileReader fn = null; FileWriter fw

11、 = null; try fn = new FileReader(F:My WorkspaceJavaIOTestFileWriter2.java); fw = new FileWriter(F:My WorkspaceJavaIOcopy TestFileWriter2.txt); while(b = fn.read()!=-1)fw.write(“|”); fw.write(b); fn.close(); fw.close(); catch (IOException e1) e1.printStackTrace(); System.out.println(文件写入错误); System.e

12、xit(-1); 4.2 处理流( 经过处理的流)常见处理流:缓冲流IO TestBufferStream1.javaimport java.io.*;public class TestBufferStream1 public static void main(String args) try FileInputStream fis = new FileInputStream(F:My WorkspaceJavaIOTestBufferStream1.java); BufferedInputStream bis = new BufferedInputStream(fis); int c = 0

13、; System.out.println(bis.read(); System.out.println(bis.read();bis bis.mark(100); /从100号往外读Fis for(int i=0;i=10 & (c=bis.read()!=-1;i+) System.out.print(char)c+ ); System.out.println(); bis.reset();/回到标记点 for(int i=0;i=10 & (c=bis.read()!=-1;i+) System.out.print(char)c+ ); bis.close(); catch (IOExce

14、ption e) e.printStackTrace(); IO/TestBufferStream2.java 带缓冲区的输入输出流(能读一行)import java.io.*;public class TestBufferStream2 public static void main(String args) try BufferedWriter bw = new BufferedWriter(new FileWriter(d:sharejavadat2.txt); BufferedReader br = new BufferedReader( new FileReader(d:sharej

15、avadat2.txt); String s = null; for(int i=1;i=100;i+) s = String.valueOf(Math.random(); bw.write(s); bw.newLine(); bw.flush();/全部取出缓冲区数据 while(s=br.readLine()!=null)/读一行 System.out.println(s); bw.close(); br.close(); catch (IOException e) e.printStackTrace(); 5. 转换流InputStreamReader和OutputStreamWrite

16、r用于与字节数据到字符数据之间转换。InputStreamReader需和InputStream“套接”。InputStream转换成ReaderOutputStreamWriter需和OutputStream“套接”。OutputStream转换成Writer转换流在构造时可以指定起编码集合,例如InputStream isr = new InputStreamReader ( System.in, “ISO08859_1”)例子IOTestTransForm1.javaIOTestTransForm2.javaimport java.io.*;public class TestTransF

17、orm2 public static void main(String args) InputStreamReader isr = new InputStreamReader(System.in);/接受键盘输入 BufferedReader br = new BufferedReader(isr);brisr String s = null; try s = br.readLine();/读一行 while(s!=null) if(s.equalsIgnoreCase(exit) break; System.out.println(s.toUpperCase(); s = br.readLi

18、ne(); br.close(); catch (IOException e) e.printStackTrace(); /阻塞6. 数据流 DataInputStream 和DataOutputStream分别继承自InputStream和OutputStream,它属于处理流,需要分别“套接”在InputStream和OutputStream类型的节点流上。DataInputStream和DataOutputStream踢狗了可以存取与机器无关的Java原始类型数据(如:int,double等)的方法DataInputStream和DataOutputStream的构造方法:DataInp

19、utStream( InputStream in)DataOutputStream( OutputStream out)例子7. Print流例子1import java.io.*;public class TestPrintStream1 public static void main(String args) PrintStream ps = null; try FileOutputStream fos = new FileOutputStream(d:baklog.dat); ps = new PrintStream(fos); catch (IOException e) e.print

20、StackTrace(); if(ps != null) System.setOut(ps);/设置输出窗口. int ln = 0; for(char c = 0; c =100) System.out.println(); ln = 0; 例子3import java.util.*; import java.io.*;public class TestPrintStream3 public static void main(String args) String s = null; BufferedReader br = new BufferedReader( new InputStrea

21、mReader(System.in); try FileWriter fw = new FileWriter (d:baklogfile.log, true); /Log4J PrintWriter log = new PrintWriter(fw); while (s = br.readLine()!=null) if(s.equalsIgnoreCase(exit) break; System.out.println(s.toUpperCase(); log.println(-); log.println(s.toUpperCase(); log.flush(); log.println(=+new Date()+=); log.flush(); log.close(); catch (IOException e) e.printSt

温馨提示

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

评论

0/150

提交评论