Apache IO包
Apache-commons工具包中提供了IOUtils/FileUtils,可方便的对文件和目录进行操作。
FileUtils类
【常用方法】
- cleanDirectory:清空目录,但不删除目录
- contentEquals:比较两个文件的内容是否相同
- copyDirectory:将一个目录内容拷贝到另一个目录。可以通过FileFilter过滤需要拷贝的文件
- copyFile:将一个文件拷贝到一个新的地址
- copyFileToDirectory:将一个文件拷贝到某个目录下
- copylnputStreamToFile:将一个输入流中的内容拷贝到某个文件
- deleteDirectory:删除目录
- deleteQuietly:删除文件
- listFiles:列出指定目录下的所有文件
- openInputSteam:打开指定文件的输入流
- readFileToString:将文件内容作为字符串返回
- readLines:将文件内容按行返回到一个字符串数组
- size:返回文件或目录的大小
- write:将字符串内容直接写到文件中
- writeByteArrayToFile:将字节数组内容写到文件中
- writeLines:将容器中的元素的toString方法返回的内容依次写入文件中
public class FileUtilsDemo1 {
public static void main(String[] args) throws Exception{
String s = FileUtils.readFileToString(new File("E:/001.txt"),"utf-8");
System.out.println(s);
}
}
public static void main(String[] args) throws Exception{
FileUtils.copyDirectory(new File("E:/a"),new File("D:/a"), new FileFilter(){
//过滤条件
@Override
public boolean accept(File pathname) {
if(pathname.isDirectory() || pathname.getName().endsWith("html")){
return true;
}
return false;
}
});
}
IoUtils
- buffer方法:将传入的流进行包装,变成缓冲流。并可以通过参数指定缓冲大小。
- closeQueitly方法:关闭流。
- contentEquals 方法:比较两个流中的内容是否一致。
- copy方法:将输入流中的内容拷贝到输出流中,并可以指定字符编码。
- copyLarge方法:将输入流中的内容拷贝到输出流中,适合大于2G内容的拷贝。
- linelterator方法:返回可以迭代每一行内容的迭代器。
- read方法:将输入流中的部分内容读入到字节数组中。
- readFully方法︰将输入流中的所有内容读入到字节数组中。
- readLine方法:读入输入流内容中的一行。
- toBufferedInputStream,toBufferedReader:将输入转为带缓存的输入流。
- toByteArray,toCharArray:将输入流的内容转为字节数组、字符数组。
- toString:将输入流或数组中的内容转化为字符串。
- write方法:向流里面写入内容。
- writeLine方法:向流里面写入一行内容。
public static void main(String[] args) throws Exception{
String content = IOUtils.toString(new FileInputStream("e:/001.txt"), "utf-8");
System.out.println(content);
}
IO流总结
【按流的方向分类】
- 输入流:数据源到程序(InputStream、Reader读进来)
- 输出流:程序到目的地(OutPutStream、Writer 写出去)
【按流的处理数据单元分类】
- 字节流:按照字节读取数据(InputStream、OutputStream)。
- 字符流:按照字符读取数据(Reader、Writer)。
【按流的功能分类】
- 节点流:可以直接从数据源或目的地读写数据。
- 节点流:可以直接从数据源或目的地读写数据。
- 处理流:不直接连接到数据源或目的地,是处理流的流。通过对其他流的处理提高程序的性能。
【Io的四个基本抽象类】 InputStream、OutputStream、Reader、Writer
【lnputStream的实现类】FilelnputStream、ByteArraylnutStream、BufferedInputStream、DatalnputStream、ObjectlnputStream
【outputStream的实现类】
FileOutputStream、ByteArrayOutputStream、BufferedOutputStream、DataOutputStream、ObjectOutputStream、PrintStream
【Reader的实现类】FileReader、BufferedReader、InputStreamReader
【Writer的实现类】FileWriterBufferedWriter、OutputStreamWriterl
【序列化】把Java对象转换为字节序列的过程
【反序列化】把字节序列恢复为Java对象的过程