java中有很多实用类,熟悉这些类,很大程度上会减少你的代码量.
本文记录的是在JDK1.7中加入的类------Files,见名知意,它就是操作文件的.
先看看官方对FIles的解释,大致意思是:"此类只包含对文件、目录或其他类型的文件进行操作的静态方法".(注意是静态方法哦),
好,接下来看几个实例
复制文件
复制的英文单词是copy,所以,我们找Files.copy方法看看有没有,结果发现,它有三个重载的方法.
重载一:将一个文件中的所有数据复制到输出流
重载二:将一个输入流中的所有数据复制到一个文件中
重载三:将一个文件中所有数据复制到另外一个文件中
细心的同学发现有一个CopyOption参数,这个参数表示复制选项,CopyOption是一个接口,它里面没有任何字段、方法,具体实现类是StandardCopyOption,它是一个枚举类
REPLACE_EXISTING:替换现有文件(如果存在)
COPY_ATTRIBUTES:将属性复制到新文件。
ATOMIC_MOVE:将文件作为原子文件系统操作移动
下面演示的是第二个重载方式,将一个网络图片下载到本地 (图片地址可能会失效)
public class Main {
public static void main(String[] args) {
try {
String urlString ="http://pic38.nipic.com/20140301/6608733_073013180000_2.jpg";
URL url =new URL(urlString);
Files.copy(url.openStream(), Paths.get("D:/", "download.jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
下载成功
移动文件
移动文件肯定要找move单词了,也就是Files.move()
Files.move没有重载方法
参数一:原文件路径
参数二:目录文件路径
public class Main {
public static void main(String[] args) {
try {
Files.move(Paths.get("D:/", "download.jpg"), Paths.get("E:/", "download.jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
删除文件
有两个方法可以删除
void Files.delete(path)
boolean Files.deleteIfExists(path)
区别:
delete没有返回值,如果试图删除一个不存在的文件,会报错
deleteIfExists 返回boolean,如果文件不存在,返回false,不会报错,如果文件存在,返回true
public class Main {
public static void main(String[] args) {
try {
System.out.println(Files.deleteIfExists(Paths.get("E:/", "msdia80.dll")));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
其他方法
还有大量的快捷方法,就不一一说明了,下面列举一个一些常用的
方法名 | 作用 |
---|---|
exists | 判断文件/文件夹是否存在 |
isDirectory | 判断是否是一个有效的目录 |
createDirectories | 创建多级目录 |
createDirectorie | 创建目录,创建多级会报 |
readAllLines | 读取一个文本文件中所有行到List<String>集合中 |
readAllBytes | 读取一个文件中所有数据到字节数组中 |
newBufferedReader | 返回这个文件的BufferedReader对象 |