java的输入输出流与文件操作(1.基本定义)

来源:互联网 发布:wap商城源码 编辑:程序博客网 时间:2024/06/18 08:45

1.关于文件的一些定义

  • 文件的逻辑结构:流式文件、记录式文件(例如数据库就是记录式的,但底层还是流式)
  • 文件的存取方法:顺序存取、随机存取(同上,数据库就是典型的随机存取,也就是指定位置的存取)
  • 文件的使用:操作接口、应用程序接口

2.流采用的是缓冲区技术,输入的时候是阻塞的,必须等待到数据的输入(因此在线程的synchronized里面是不建议等待输入的)

3.流类分为四大类

  • InputStream    抽象字节输入流类
  • OuputStream    抽象字节输出流类
  • Reader        抽象字符输入流类
  • Writer        抽象字符输出流类

InputStream  和OuputStream  是控制字节的流类,是最开始使用的输入输出控制方式,但是比较慢,因为是一个字节一个字节的流入流出的。

Reader和Writer 可以控制字符流,一个字符两个字节,相对来讲是比较快的。

4.文件操作类

  • File                文件类
  • RandomAccessFile    随机存取文件类

RandomAccessFile:
该类的实例支持读取和写入随机访问文件。
随机访问文件的行为类似于存储在文件系统中的大量字节。

在这个类中的所有读取例程通常都是如果在读取所需的字节数之前到达文件结尾,则抛出一个EOFException (这是一种IOException )。如果任何字节由于除文件末尾之外的任何原因而无法读取,则抛出IOException以外的EOFException特别地,如果流已经被关闭,则可以抛出IOException

5.InputStream类的子类


6.OutputStream类的子类

7.代码演示


(1)测试SystemInput,输入12a,输出49 50 97 13 10

13是换行,10是回车
Windows系统下需要回车换行才会换行,Linux系统下只需要换行符

@Testpublic void testSystemIn() throws IOException{InputStream in = System.in;for (int i = 0; i < 5; i++) {int n = in.read();System.out.println(n);}}

(2)测试SystemOutput,在控制台进行打印

@Testpublic void testSystemOut1(){PrintStream out = System.out;for (int i = 0; i < 5; i++) {out.println("subeyz");}}

(3)测试SystemOutput,这次将写入到指定文件中

@Testpublic void testSystemOut2() throws FileNotFoundException{System.setOut(new PrintStream("E:/test/io.txt"));for (int i = 0; i < 5; i++) {System.out.println("subeyz");}}


原创粉丝点击