已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第08章_IO 听课笔记 2010年3月31日星期三, 19:54:28 by LoveXForce第八章 流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包中定义了多个流类型(类或者抽象类)来实现输入/输出功能:可以不按数据流的方向不同分为输入流和输出流按处理数据单位不同分为字节流和字符流按功能不同分为节点流和处理流J2SDK所提供的所有流类型位于包Java,io内都分别继承自以下四中抽象流类型。字节流(Stream)字符流(两个字节)输入流InputStreamReader输出流OutputStreamWriter3. 输入/输出流类4个1 InputStream 继承自InputStream的流都是用于向程序中输入数据,且数据的单位为字节(8bit),下图深色为节点流,浅色为处理流InputStream的基本方法2 OutputStream 继承自outputStream的流都是用于程序中输入数据,且数据的单位为字节(8bit),下图深色为节点流,浅色为处理流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 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)/读一个字节到变量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(String 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) out.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 static 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 (FileNotFoundException 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=50000;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 = 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.exit(-1); 4.2 处理流( 经过处理的流)4.2.1常见处理流:缓冲流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; 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 (IOException 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:sharejavadat2.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和OutputStreamWriter用于与字节数据到字符数据之间转换。InputStreamReader需和InputStream“套接”。InputStream转换成ReaderOutputStreamWriter需和OutputStream“套接”。OutputStream转换成Writer转换流在构造时可以指定起编码集合,例如InputStream isr = new InputStreamReader ( System.in, “ISO08859_1”)例子IOTestTransForm1.javaIOTestTransForm2.javaimport java.io.*;public class TestTransForm2 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.readLine(); br.close(); catch (IOException e) e.printStackTrace(); /阻塞6. 数据流 DataInputStream 和DataOutputStream分别继承自InputStream和OutputStream,它属于处理流,需要分别“套接”在InputStream和OutputStream类型的节点流上。DataInputStream和DataOutputStream踢狗了可以存取与机器无关的Java原始类型数据(如:int,double等)的方法DataInputStream和DataOutputStream的构造方法:DataInputStream( 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.printStackTrace(); 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 InputStreamReader(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.p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社保缴纳协议书范本
- 福田补租协议书范本
- 离婚房屋转让协议书
- 离职交接保密协议书
- 私人拆屋合同协议书
- 2025年地理集训试卷及答案
- 2025年高科技创新孵化器项目可行性研究报告
- 2025年贝壳新房课程考试及答案
- 按各岗位笔试从高到低排列以13比例确定人员人选最后一名笔试并列取所有并列报考人员为人选人员如果没达到13比例按实有人数前需进行笔试历年参考题库附带答案详解
- 2025重庆庆铃日发座椅有限公司招聘5人笔试历年参考题库附带答案详解
- 宜宾市叙州区事业单位2025年下半年公开考核招聘工作人员(24人)考试笔试参考题库附答案解析
- 流感预防安全教育课件
- 2025年湖南长沙市总工会招聘55名工会社会工作专业人才备考题库附答案
- 2025巴彦淖尔市农垦(集团)有限公司招聘37人备考题库附答案
- 2025年调度运行领域电力人工智能应用研究报告
- 2025年餐饮服务机器人市场分析现状
- DB2303∕T 015-2023 红松果园营建技术规程
- 2025年卫生高级职称面审答辩(普通外科)副高面审经典试题及答案
- 2025-2026学年苏教版小学数学三年级上册期末综合测试卷及答案(三套)
- 健康趋势与罐头市场-洞察与解读
- 2025-2026人教版小学6六年级数学上册(全册)测试卷(附答案)
评论
0/150
提交评论