1.文件操作
获取File 对象( File file = new File(path); )之后,可以创建文件,创建文件夹,销毁文件,判断是否为目录,得到该路径下的所有文件。
file.createNewFile(); //创建文件
file.mkdir(); //创建文件夹
file.delete(); //实时销毁
file.deleteOnExit(); //当jvm终止时,被执行销毁
file.isDirectory(); //判断是否为目录
File files = file.listFiles(); //得到该路径下的所有文件,返回的是File数组,得到完整路径
String files = file.list(); //得到的是所有文件,返回String数组,不是完整路径。
2.输入输出流
接口: DataInput, DataOutput, ObjectInput, ObjectOutput
字节流:继承InputStream, OutputStream抽象类,输入流中与数据源有直接接触的类有FileInputStream, 和ByteArrayInputStream, 其他都是装饰类(Decorator模式)
FileInputStream
PipedInputStream(允许以管道的方式来处理流):PipedInputStream和PipedOutStream类用于在应用程序中创建管道通信。一个PipedOutputStream必须与一个PipedInputStream连接建立一个通信管道,PipedOutputStream可以向管道中写入数据,PipedInputStream可以从管道中读取PipedOutputStream写入的数据。这两个类主要用来完成线程之间的通信。一个线程的管道输入流可以从另一个线程的管道输出流中读取数据。使用管道流类,可以实现各个程序模块之间的松耦合通信。
-
ByteArrayInputStream:主要将内容写入内存,内存操作流
FilterInputStream
DataInputStream(允许程序以与机器无关的方式从底层输入流中读取基本java数据类型)
BufferedInputStream(提供缓冲功能)
PushbackInputStream:允许放回已经读取的数据 (内部生成一个buff, 每次调用unread 就将参数buff里的东东加入到buff里,然后每次调read时,如果buff里有东西,就返回buff里的东西.否则从inputstream里读.注意:push back buff不会自动填充read的东西,而是需要显示调用unread来的填充).
SequenceInputStream: 能对多个inputstream进行顺序处理。new
SequenceInputStream(input1, input2);
提供重要的方法:
a. read() // 返回读的下一个字节。
b. read(byte[] b); //返回读入缓冲区的总字节数。
c. read(byte[] b, int off, int len); //读取的字节数 int
字符流:Reader, Writer(以16位的Unicode表示的字符为基本处理单位)
a. FileReader
b. PipedReader
c. CharArrayReader
d. FilterReader
e. StringReader
f. BufferedReader
提供方法:
1write(char[] cbuf);
2write(char[] cbuf, int off, int len);
3write(int c); //将指定的字节写入此输出流。write
的常规协定是:向输出流写入一个字节。要写入的字节是参数 b
的八个低位。b
的 24 个高位将被忽略
4write(String str);
对象流: ObjectInputStream, ObjectOutputStream
文件处理:RandomAccessFile
字节流和字符流的区别:
字节流在操作时,本身不会用到缓冲区的,是文件本身直接操作的。但是字符流在操作的时候,是会用到缓冲区的,是通过缓冲区来操作文件的。
OutputStreramWriter 和InputStreamReader类,字符和字节转换流。(OutputStreramWriter将输出的字符流转化为字节流,InputStreamReader将输入的字节流转换为字符流)
对象的序列化