第6章数据流的运用 比京大学计算机系 代亚非
第6章 数据流的运用 北京大学计算机系 代亚非
2 第6章数据流的运用 ■6.1输入输出方法 ■62输入输出流的基类 ■6.3 File o ■6.4数据输入输出流 ■6.5随机存取文件 ■6.6文件的其它操作 6.7java中的 unicode ■6.8管道流 6.9对象流 ■6.10流的分类 6.11小结
2 第6章 数据流的运用 n 6.1 输入输出方法 n 6.2 输入输出流的基类 n 6.3 File I/O n 6.4 数据输入输出流 n 6.5 随机存取文件 n 6.6 文件的其它操作 n 6.7 java中的unicode n 6.8 管道流 n 6.9 对象流 n 6.10 流的分类 n 6.11 小结
3 6.1输入输出方法 ■什么是数据流? 文件,字符串 文件 存储区 文件 起 程序 程序 终 点网络端点 终端 数据流 网络端点 数据流是指所有的数据通信通道 在java中有关流的操作使用 java. io.* ■出于安全的考虑小应用不能实现文件IO流
3 文件 程序 终端 文件 程序 网络端点 数据流 起 点 终 点 网络端点 文件,字符串 存储区 6.1 输入输出方法 n 什么是数据流 ? n 数据流是指所有的数据通信通道 n 在java中有关流的操作使用java.io. * n 出于安全的考虑,小应用不能实现文件I/O流
61输入输出方法 ■ System类管理标准输入输出流和错误流 System. out: ■把输出送到缺省的显示(通常是显示器) System. in ■从标准输入获取输入(通常是键盘) System.err ■把错误信息送到缺省的显示 每当main方法被执行时就自动生成上述三个 对象
4 6.1 输入输出方法 n System类管理标准输入输出流和错误流 n System.out: n 把输出送到缺省的显示(通常是显示器) n System.in n 从标准输入获取输入(通常是键盘) n System.err n 把错误信息送到缺省的显示 n 每当main方法被执行时,就自动生成上述三个 对象
5 61输入输出方法 public class readhello i public static void main(String args) char nchar, Systen. out printIn(“ Enter a character:”); try in Char=(char)System. in reado; Syte. out. printIn(““+ in char); catch(IoException e) t Sytem out printIn( Error reading from user)
5 6.1 输入输出方法 public class ReadHello { public static void main(String args[]) { char inchar; System.out.println(“Enter a character:”); try{ inChar=(char)System.in.read(); Syste.out.println(“ “+ inChar); }catch(IOException e) { Sytem.out.println(“Error reading from user”); } } }
6 61输入输出方法 import java. io. class InTest i public statics void main(String args ttryi byte barrayll-new byte 128; System. out. printIn(“ Enter something:”); System in read (array); Systen. out.print(“ You entered:”); System. out. printIn(bArra); catch(eXception ioe) i System. out.printIn(ioe toString);) streamlostream. class---f4 bat
6 stream\Iostream.class---f4.bat 6.1 输入输出方法 import java.io. *; class IOTest { public statics void main(String args[]) {try { byte bArray[]=new byte[128]; System.out.println(“Enter something:”); System.in.read(bArray); System.out.print(“You entered:”); System.out.println(bArray); }catch(IOException ioe) { System.out.println(ioe.toString()); } } }
61输入输出方法 为什么输入的是字符输出是乱码? 原因 System. out. printin( aRray)输出的是数组 的地址而不是字符 ■改进将字符数组变换成字符串 原来是 System. out. printIn( array); ■现在为 String s= new String( aRray0); System. out. printIn(s); ■ System. in是属于 BufferedInputstrean类型 System. out是属于 Printstream类型 System.err也是属于 Printstream类
7 6.1 输入输出方法 n 为什么输入的是字符,输出是乱码? n 原因:System.out.println(bArray)输出的是数组 的地址而不是字符 n 改进:将字符数组变换成字符串 n 原来是:System.out.println(bArray); n 现在为:String s=new String(bArray,0); n System.out.println(s); n System.in是属于BufferedInputStream类型 n System.out是属于PrintStream类型 n System.err也是属于PrintStream类型
62输入输出流的基类 Java中每一种流的基本功能依赖于基本类 InputStream/FHOutputStream 它们是抽象类不能直接使用 属于 Inputstream类的方法有: read(:从流中读入数据 skip:跳过流中若干字节数 a available:返回流中可用字节数 marko:在流中标记一个位置 reset:返回标记过得位置 markSupporto:是否支持标记和复位操作 closed:关闭流
8 6.2 输入输出流的基类 n Java中每一种流的基本功能依赖于基本类 InputStream和OutputStream n 它们是抽象类,不能直接使用 n 属于InputStream类的方法有: n read():从流中读入数据 n skip():跳过流中若干字节数 n available():返回流中可用字节数 n mark():在流中标记一个位置 n reset():返回标记过得位置 n markSupport():是否支持标记和复位操作 n close():关闭流
62输入输出流的基类 方法 reado提供了三种从流中读数据的方法 int reado:读一个整数 a int read( byte bl):读多个字节到数组中 int read (byte, int off, int len); 属于 Outputstream类的方法有: write(intb):将一个整数输出到流中 write( byte b):将数组中的数据输出到流中 write( byte b[l, int off int len):将数组b中从of指 定的位置开始len长度的数据输出到流中
9 6.2 输入输出流的基类 n 方法read()提供了三种从流中读数据的方法. n int read():读一个整数 n int read(byte b[]):读多个字节到数组中 n int read(byte,int off,int len); n 属于OutputStream类的方法有: n write(int b):将一个整数输出到流中 n write(byte b[]):将数组中的数据输出到流中 n write(byte b[], int off,int len):将数组b中从off指 定的位置开始len长度的数据输出到流中
10 62输入输出流的基类 a flush:将缓冲区中的数据强制送出 a closed:关闭流 ■ Printstream类 printIng不属于 Outputstream类它是 Printstream类的子类能提供复杂的输出 ■ Printstream类的方法有: a write, flush, checkError,print, printIn, close ■其中 printIn可以输出多种形式的数据例如: printIn(String s), println(char c)H
10 6.2 输入输出流的基类 n flush():将缓冲区中的数据强制送出 n close():关闭流. n PrintStream类 n println()不属于OutputStream类,它是 PrintStream类的子类,能提供复杂的输出 n PrintStream类的方法有: n write, flush, checkError,print, println,close. n 其中println可以输出多种形式的数据.例如: n println(String s), println(char c)等