IO流和编程规范_第1页
IO流和编程规范_第2页
IO流和编程规范_第3页
IO流和编程规范_第4页
IO流和编程规范_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、IO流和编程规范流和编程规范主讲人xxx 教学目标教学目标理解JAVA流式输入/输出原理; 了解JAVA流的分类; 熟练应用文件流和缓冲流,字节流和字符流; 了解JAVA编程规范; 教学内容教学内容 JAVA流式输入/输出原理; 输入/输出流类; 常见的节点流和处理流及用法; JAVA编程规范简介; 重点重点 难点难点u流式输入/输出原理 uJAVA流式输入/输出原理 u文件流和缓冲流的熟练应用 重难点重难点 建议学时建议学时 建议学时:4学时建议学时建议学时1、JAVA流式输入/输出原理IO流和编程规范流和编程规范 在Java程序中,对于数据的输入/输出操作以“流” (stream) 方式进

2、行;J2SDK提供了各种各样的“流”类,用以读写不同种类的数据。它们的数量超过了60个,这些类都被定义在java的io包里面。 00101 文件文件程序程序文件文件 00101程序程序网路连接网路连接程序程序0010111 程序程序程序程序010010文件文件010程序程序“hello”2、输入/输出流的分类IO流和编程规范流和编程规范 java.io 包中定义了多个流类型(类或抽象类)来实现输入/输出功能;可以从 不同的角度对其进行分类:1.按数据流方向的不同可以分为输入流和输出流。2.按处理数据单位的不同可以分为字节流和字符流。3.按照功能不同可以分为节点流和处理流。J2SDK 所提供的所

3、有流类都位于java.io包内,都分别继承自以下四种抽象流类型。字节流字节流字符流字符流输入流输入流InputStreamReader输出流输出流OutputStream Writer3、常见的节点流和处理流及用法IO流和编程规范流和编程规范 节点流为可以从一个特定的数据源(节点)读写数据(如:文件,内存)数据源数据源程序程序处理流是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。节点流节点流数据源数据源数据源数据源程序程序程序程序IO流和编程规范流和编程规范 InputStream继承自InputSteam的流都是用于向程序中输入数据,且数据的单位为

4、字节(8 bit);下图中深色为节点流,浅色为处理流。IO流和编程规范流和编程规范 此抽象类是表示字节输入流的所有类的超类。此抽象类是表示字节输入流的所有类的超类。【1】 abstract int read() throws IOException 功能:读取一个byte的数据并以整数的形式返回(范围是:0255), 如果返回-1表示已到输入流的末尾【2】 int read(byte buffer) throws IOException 功能:把读取的数据存放到一个字节数组buffer中,返回实际读取的字节数,如果读取前已到输入流的末尾返回-1【3】 int read(byte buffer,

5、 int offset, int length) throws IOException 功能:读取length个字节并存储到一个字节数组buffer,从offset位置开始存放,返回实际读取的字节数,如果读取到输入流的末尾返回-1 【4】 void close() throws IOException 功能:关闭此输入流并释放与该流关联的所有系统资源。【5】 long skip(long n) throws IOException 功能:跳过n个字节不读,返回实际跳过的字节数【6】 int available() throws IOException 功能:返回流中还有多少个byte的数据可以

6、读IO流和编程规范流和编程规范 OutputStream 继承自OutputSteam的流是用于程序中输出数据,且数据的单位为字节(8 bit);下图中深色为节点流,浅色为处理流。IO流和编程规范流和编程规范 此抽象类是表示输出字节流的所有类的超类。输出流接受输出字节并将这些字节发送到某个接收器。 【1】 void write (int b) throws IOException 功能:向输出流中写入一个字节数据,要写入的字节是参数 的八个低位。参数的 24 个高位将被忽略。 【2】 void write (byte b) throws IOException 功能:将一个字节类型的数组中的数

7、据写入输出流 【3】 void write (byte b, int offset, int length) throws IOException 功能:将一个字节类型的数组中的第(offset)位置开始的length个字节写入到输出流 【4】 void flush( ) throws IOException 功能:当用write方法输出数据时,有些数据不会马上输出到目的地,通常会缓存在内存中的缓冲区,flush方法将输出流中缓冲的数据全部写出到目的地。 【5】 void close( ) throws IOException 功能:关闭流释放系统资源,会自动调用flush方法关闭的流不能执行

8、输出操作,也不能重新打开。 IO流和编程规范流和编程规范 Reader继承自Reader的流都是用于向程序中输入数据,且数据的单位为字符;下图中深色为节点流,浅色的为处理流。IO流和编程规范流和编程规范 它是一个用于读取字符流的抽象类。 【1】 int read( ) throws IOException 功能:读取单个字符。返回字符对应的整数,范围在 0 到 65535 之间 (0 x00-0 xffff), 如果返回-1已到输入流的末尾。 【2】 int read(char charbuffer) throws IOException 功能:读取一系列字符并存储到一个数组charbuffe

9、r,返回实际读取的字符个数,如果读取前已到输入流的末尾返回-1 【3】 int read(char charbuffer, int offset, int length) throws IOException 功能:读取length个字符并存储到从offset位置开始一个数组buffer, 返回实际读取的字符数,如果读取前已到输入流的末尾返回-1 【4】 void close( ) throws IOException 功能:关闭流释放内存资源 【5】 long skip(long n) throws IOException 功能:跳过 n 个字符不读,返回实际跳过的字节数IO流和编程规范流和

10、编程规范 Writer继承自Writer的流都是用于程序中输出数据,且数据的单位为字符(16 bit);下图中深色为节点流,浅色为处理流。IO流和编程规范流和编程规范 它是一个写入字符流的抽象类。 【1】 void write(int b) throws IOException 功能:向输出流中写入一个字符数据,该字节数据为参数b的低16位【2】 void write(char charbuffer) throws IOException 功能:将一个字符类型的数组中的数据写到输出流中【3】 void write(char charbuffer, int offset, int length)

11、 throws IOException 功能:将一个字符类型的数组中的从指定位置(offset)开始的length个字符写到输出流【4】 void write(String str) throws IOException 功能:将一个字符串中的字符写入到输出流【5】 void write(String str, int offset, int length) throws IOException 功能:将一个字符串从offset开始的length个字符写入到输出流【6】 void flush( ) throws IOException 功能:将输出流中缓冲的数据全部写出到目的地【7】 void

12、 close() throws IOException 功能:关闭流释放系统资源, 同时要先刷新它。IO流和编程规范流和编程规范 节点流类型类类 型型 字字 符符 流流字字 节节 流流File(文件)(文件)FileReaderFileWriterFileInputStreamFileOutputStreamMemory ArrayCharArrayReaderCharArrayWriterByteArrayInputStreamByteArrayOutputStreamMemory StringStringReaderStringWriterPipe(管道)(管道)PipedReaderPi

13、pedWriterPipedInputStreamPipedOutputStreamIO流和编程规范流和编程规范 File类java.io.File类封装了对用户机器上的文件系统进行操作的功能,它不仅可以管理文件,也可以管理目录。File类的构造方法:public File(String pathname) 以pathname为路径创建File对象,如果没有提供全限定名,则默认为当前路径,System.getProperty(user.dir)。public File(String path, String name) 以path为父路径, name为子路径,创建File对象。public F

14、ile (File dir, String name);注意:如果提供的文件/目录名没有对应的文件/目录,该方法调用不会创建一个新文件/目录。File的静态属性separator存储了当前系统的路径分隔符。 IO流和编程规范流和编程规范 File类常用方法通过通过FileFile对象可以访问文件的属性。对象可以访问文件的属性。 public boolean canRead() public boolean canWrite() public boolean exists() public boolean isDirectory() public boolean isFile() public

15、boolean isHidden() public long lastModified() public long length() public String getName() public String getPath()通过通过FileFile对象创建空文件或目录对象创建空文件或目录(在该对象所指的文件或目录不存在的情况下)。 public boolean createNewFile () throws IOException public boolean delete() /删除文件或目录目录下必须为空 public void deleteOnExit()/JVM退出时删除 publ

16、ic boolean mkdir() public boolean mkdirs()/创建在路径中的一系列目录 public String list() /列出该目录下的所有文件及目录名IO流和编程规范流和编程规范 访问文件FileInputStream和FileOutputStream分别继承自InputStream 和 OutputStream 用于向文件中输入和输出字节。FileInputStream 和 FileOutputStream的常用构造方法:FileInputStream (String name) throws FileNotFoundExceptionFileInputS

17、tream (File file) throws FileNotFoundExceptionFileOutputStream (String name) throws FileNotFoundExceptionFileOutputStream (String name,boolean append)throws FileNotFoundExceptionFileOutputStream (File file) throws FileNotFoundExceptionFileOutputStream (File file,boolean append) throws FileNotFoundEx

18、ceptionFileInputSteam 和 FileOutputStream 类支持其父类InputStream 和OutputStream 所提供的数据读写方法。注意:1、在实例化FileInputStream和FileOutputSteam流时要用trycatch 语句以处理其可能抛出的FileNotFoundException。 2、在读写数据时也要用trycatch 语句以处理可能抛出的 IOException。 3、FileNotFoundException 是IOException的子类IO流和编程规范流和编程规范 import java.io.*; /FileInputStr

19、eam/FileInputStream举例举例public class TestFileInputStream public static void main(String args) int b = 0; int num = 0;String path = “c:aa.txt;FileInputStream in = null;try in = new FileInputStream(path);while (b = in.read() != -1) System.out.print(char) b); num+;System.out.println(ntotal: + num + byte

20、s); catch (FileNotFoundException e) System.out.println(FileNotFound); System.exit(-1); catch (IOException e1) System.out.println(read error); finally try in.close(); catch (IOException e) e.printStackTrace();IO流和编程规范流和编程规范 import java.io.*; /FileOutputStream/FileOutputStream类举例类举例public class TestFi

21、leOutputStream public static void main(String args) int b = 0; FileInputStream in = null; FileOutputStream out = null; String basePath = System.getProperty(user.dir) + File.separator; try in = new FileInputStream(basePath + java.doc); out = new FileOutputStream(basePath + b.doc); while(b = in.read()

22、 != -1) out.write(b); System.out.println(文件已复制); catch (FileNotFoundException e2) System.out.println(找不到指定文件); catch (IOException e1) System.out.println(文件复制错误); finally try in.close(); catch (IOException e) e.printStackTrace(); try out.close(); catch (IOException e) e.printStackTrace(); IO流和编程规范流和编

23、程规范 访问文件 FileReader 和 FileWriter 分别继承自Reader和Writer,与FileInputSteam和FileOutputStream类似,所不同的是FileReader和FileWriter向文件输入和输出的数据单位为字符。 FileReader和FileWriter的常用构造方法:public FileWriter(File file) throws IOExceptionpublic FileWriter(File file, boolean append) throws IOExceptionpublic FileWriter(String fileN

24、ame) throws IOExceptionpublic FileWriter(String fileName,boolean append) throws IOExceptionpublic FileReader(String fileName) throws FileNotFoundExceptionpublic FileReader(File file) throws FileNotFoundExceptionIO流和编程规范流和编程规范 FileReader类举例import java.io.*;public class TestFileReader public static vo

25、id main (String args) FileReader fr = null; int c = 0; String path = “c:Test.java; try fr = new FileReader(path);while (c = fr.read() != -1) System.out.print(char) c); catch (FileNotFoundException e) System.out.println(找不到指定文件); catch (IOException e) System.out.println(文件读取错误); finally try fr.close(

26、); catch (IOException e) e.printStackTrace(); IO流和编程规范流和编程规范 FileWriter类举例import java.io.*;public class TestFileWriter public static void main (String args) FileWriter fw = null; String br = System.getProperty (line.separator); try fw = new FileWriter (d:unicode.dat);for (int i = 0; i = 100; i+) fw.

27、write(“这是: + i + br); catch (IOException e1) e1.printStackTrace(); finallytry fw.close(); catch (IOException e) e.printStackTrace();System.out.println(ok);IO流和编程规范流和编程规范 处理流类型处理类型处理类型 字字 符符 流流字字 节节 流流缓缓存存BufferedReaderBufferedWriterBufferedInputStreamBufferedOutputStream字符和字节转换字符和字节转换InputStreamRead

28、erOutputStreamWriter对象序列化对象序列化ObjectInputStreamObjectOutputStream特定数据类型访问特定数据类型访问DataInputStreamDataOutputStream计数计数LineNumberReaderLineNumberInputStream重复重复PusbackReaderPushbackInputStream打印打印PrintWriterPrintStreamIO流和编程规范流和编程规范 缓冲流缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法。J2SDK提供了四种缓存流

29、,其常用的构造方法为:BufferedReader (Reader in)BufferedReader (Reader in, int sz) /sz 为自定义缓存区的大小BufferedWriter (Writer out)BufferedWriter (Writer out, int sz)BufferedInputStream (InputStream in)BufferedInputStream (InputStream in, int size)BufferedOutputStream (OutputStream out)BufferedOutputStream (OutputStr

30、eam out, int size)IO流和编程规范流和编程规范 l缓冲输入流支持其父类的mark和reset方法。lmark用于“标记”当前位置,可以使用reset方法返回这个标记重新读取数据。lBufferedReader提供了readLine方法用于读取一行字符串(以r或n分隔)。lBufferedWriter提供了newLine用于写入一个行分隔符。l对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush方法将会使内存中的数据立刻写出。思考思考: : 当前面的文件复制案例中复制的是几兆或几十兆的图形文件时,比较一下没有当前面的文件复制案例中复制的是几兆或几十兆的图形文件时,比较一

31、下没有使用缓冲流与使用了缓冲流的情况下所需要的时间相差多少?使用缓冲流与使用了缓冲流的情况下所需要的时间相差多少?( (提示:提示:System.System.currentTimeMilliscurrentTimeMillis();();可获取当前时间返回一个长整型的毫秒数可获取当前时间返回一个长整型的毫秒数) )IO流和编程规范流和编程规范 import java.io.*;public class TestBufferStream1 /BufferedInputStream/BufferedInputStream类举例类举例 public static void main(String

32、args) BufferedInputStream bis = null; int c = 0; try String path = “c:hello.txt;bis = new BufferedInputStream(new FileInputStream(path);System.out.println(char)bis.read(); System.out.println(char)bis.read();bis.mark(100);for (int i = 0; i = 10 & (c = bis.read() != -1; i+) System.out.print(char)

33、c );System.out.println();bis.reset();for (int i = 0; i = 10 & (c = bis.read() != -1; i+) System.out.print(char) c); catch (IOException e) e.printStackTrace(); finally try bis.close(); catch (IOException e) e.printStackTrace(); IO流和编程规范流和编程规范 4、JAVA编程规范简介 编程规范就是为了便于自己和他人阅读理解源程序,而制定的一个规范。如在Visual

34、C+中源程序中变量的取名一般采用匈牙利表示法则,该法则要求每个变量名都有一个前缀,用于表示变量的类型,后面是代表变量含义的一串字符串。例如,前缀n表示整形变量,前缀sz表示以0结束的字符串变量,前缀lp表示指针变量。 编程规范只是一个规范,也可以不遵守,但是要做一个有良好编程风格的程序员,就一定要遵守编程规范,不仅方便自己以后的阅读,也方便与其他程序员的交流。 IO流和编程规范流和编程规范 虽然编程语言各异,但从编程规范上来讲,它的要求主要体现在以下5个方面: 基本性要求 可读性要求 机构化要求 正确性与容错性要求 可重用性要求IO流和编程规范流和编程规范 基本性要求1. 程序结构清析,简单易懂,单个函数的程序行数不得超过100行。 2. 打算干什么,要简单,直接了当,代码精简,避免垃圾程序。 3. 尽量使用标准库函数和公共函数。 4. 不要随意定义全

温馨提示

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

评论

0/150

提交评论