1、java.io包下
File类:java程序中的此类的一个对象对应着硬盘中的一个文件或者网络中的资源。
File file1 = new File("d:\\io\\hello.txt");
File file2 = new File("d:\\io\\io1");
1)File 即可以表示一个文件(.doc .xls .mp3 .avi .jpg .dat)也可以表示一个文件目录。
2)File类的对象是与平台无关的。
3)File类针对文件或者文件目录,只能进行新建、删除、重命名、上层目录等。如果涉及到访问文件的内容,只能使用IO流下提供的相应的输入输出流来实现。
4)常把File类的对象作为形参传递给相应的输入输出流的构造器中!
2. IO流的结构
抽象基类 访问文件(节点流) 缓冲流(处理流的一种) 转换流 对象流
InputStream FileInputStream(int read(byte[] b)) BufferedInputStream ObjectInputStream
OutputStream FileOutputStream(void write(b,0,len)) BufferedOutputStream ObjectOutputStream
Reader FileReader(int read(char[] c)) BufferedReader InputStreamReader
Writer FileWriter(void write(c,0,len)) BufferedWriter OutputStreamWriter
注:1.从硬盘中读入一个文件,要求此文件一定得存在,若不存在包FileNotFoundException的异常
2.从程序中输出一个文件到硬盘,此文件可以不存在,若不存在,就创建一个实现输出,若存在,则将存在的文件覆盖。
3.开发时都使用缓冲流来代替节点流
4.最后要关闭相应的流,先关输出流,再关输入流。将此操作放入finally
3. IO流的划分
1)按照流的流向的不同:输入流、输出流
2)按照流中数据单位的不同:字节流、字符流(纯文本文件使用字符流,除此之外使用字节流)
3)按照流的角色的不同:节点流 处理流(流直接作用于文件上是节点流(4个),除此之外都是处理流)
4.其他的流
1)转换流:实现字节流与字符流之间的
InputStreamReader:输入时,实现字节流到字符流的转换,提高操作的效率(前提是,数据是文本文件),解码:字节数组到字符串。
OutputStreamWriter:输入时,实现字符流到字节流的转换,编码:字符串到字节数组。
例子:从键盘输入字符串,要求将读取到的整行字符串转换成大写输出。
2)标准的输入输出流:
System.in:返回的InputStream类型的抽象基类。从键盘读入数据
System.out:从显示器输出数据,以PrintStream
3)打印流(都是输出流):PrintStream(处理字节) PrintWriter(处理字符)
可以使用System.setOut(PrintStream p)重新设置输出的位置。
PrintStream p = new PrintStream(new FileOutputStream("hello.txt"),true)
4)数据流(处理基本的数据类型、String类、字节数组):
DataInputStream DataOutputStream
5)对象流(用来处理对象)
对象的序列化机制:把内存中的java对象转换成与平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上或通过网络将这种二进制流传输到另一个网络节点、当其他程序获取了这种二进制流,就可以恢复成原来的java对象。
ObjectInputStream(Object readObject();) ObjectOutputStream(void writeObject(Object obj))
如何创建流的对象:ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("person.txt")));
ObjectIntputStream ois = new ObjectIntputStream(new FileInputStream(new File("person.txt")));
实现序列化机制的对象对应的类的要求:类要实现Serializable接口;类的所有属性也要实现Serializable接口;提供序列版本号; 属性声明为static或者transient的,不可实现序列化。
6)随机存取文件流:RandomAccessFile
特点:6.1 既可以当输入流也可以当输出流;public RandomAccessFile(File file,String mode)
6.2 支持从文件的开头读取、写入(对文件内容的覆盖),若输出的文件不存在则直接创建。
6.3 支持任意位置的“插入”。