java7新特性IO操作Files

来源:互联网 发布:pandakill第四季 知乎 编辑:程序博客网 时间:2024/05/21 19:52

java1.7的java.nio.file包中定义的类使得对文件的操作变得简单,灵活的多,且看下面的例子:

package Test1;import java.io.IOException;import java.nio.file.DirectoryStream;import java.nio.file.Files;import java.nio.file.LinkOption;import java.nio.file.Path;import java.nio.file.Paths;import java.nio.file.StandardCopyOption;import java.nio.file.attribute.BasicFileAttributes;import java.util.Date;/** * Files类主要是用来对文件的 * @author zKF57533 */public class TestFiles {/** * 非常方便的对文件进行移动操作 * 将tt.txt从pathFrom文件夹位置移动到pathTo文件夹下 * <h1>此方法可以和copy这个方法相比较,用法相同,其他增删改查操作请参考api即可</h1> * @throws IOException  */public static void moveFile() {Path pathFrom = Paths.get("e:/logs", "tt.txt");//其中e:/logs/errorLog/tt.txt的tt.txt文件可以不存在,如果存在会被替换掉Path pathTo = pathFrom.getParent().resolve("errorLog/dd.txt");try {//文件的大小bytesSystem.out.println(Files.size(pathFrom));//调用文件移动方法Files.move(pathFrom, pathTo, StandardCopyOption.REPLACE_EXISTING);} catch (IOException e) {System.err.println("移动文件错误" + e.getMessage());}}/** * 测试文件的属性信息 * 包括文件的修改时间、是否是文件夹、创建时间等 */@SuppressWarnings("deprecation")public static void fileAttributes(){Path path = Paths.get("e:/logs");//1System.out.println(Files.isDirectory(path, LinkOption.NOFOLLOW_LINKS));//2try {//获得文件的基础属性BasicFileAttributes attributes = Files.readAttributes(path, BasicFileAttributes.class);System.out.println(attributes.isDirectory());System.out.println(new Date(attributes.lastModifiedTime().toMillis()).toLocaleString());} catch (IOException e) {e.printStackTrace();}}/** * 创建文件夹 * 遍历文件夹下的文件 */public static void createDir(){Path path = Paths.get("e:/test/tte");try {//创建文件夹if(Files.notExists(path)){Files.createDirectories(path);System.out.println("create dir");}else{System.out.println("dir exists");}//在创建的文件夹下建几个txt文件,例如//2.txt//ff  文件夹//java.bat//_java.txt//遍历文件夹下面的文件DirectoryStream<Path> paths = Files.newDirectoryStream(path);for(Path p : paths){System.out.println(p.getFileName());}System.out.println();//创建一个带有过滤器,过滤文件名以java txt bat结尾的文件DirectoryStream<Path> pathsFilter = Files.newDirectoryStream(path, "*.{java,txt,bat}");for(Path p : pathsFilter){System.out.println(p.getFileName());}} catch (IOException e) {e.printStackTrace();}}}