JDK1.7引入了新的IO操作类,java.nio.file包下,Java NIO Path接口和Files类
Path接口:
1、Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个根部是根部件时就是绝对路径,例如:/或者C:\,而允许访问的根部件取决于系统文件
2、以根部件开始的路径是绝对路径,否则就是相对路径
3、静态的Paths.get方法接受一个或多个字符串,字符串之间自动使用默认文件系统的路径分隔符连接起来(Unix是/,Windows是\),这就解决了跨平台的问题,接着解析连接起来的结果,如果不是合法的就抛出InvalidPathException异常,否则就返回一个Path对象
File工具类:
1、读写文件:
2、复制、剪切、删除:
3.创建文件和目录:
代码示例:
package com.lemon;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.nio.file.StandardOpenOption;
import javax.management.StandardMBean;
import javax.net.ssl.StandardConstants;
public class PathDemo {
public static void main(String[] args) {
// 以前只能用File读写文件
File file = new File("F:\\javatest\\lemon1.txt");
// Path读写文件
// 读取方式一
Path p1 = Paths.get("F:\\javatest", "lemon1.txt");
System.out.println(p1);
// 读取方式二
Path p2 = file.toPath();
System.out.println(p2);
// 读取方式三
Path p3 = FileSystems.getDefault().getPath("F:\\javatest", "lemon1.txt");
System.out.println(p3);
// Files工具类
Path p4 = Paths.get("F:\\javatest", "lemon1.txt");
// Files写文件
String info = "这里是Files工具类";
try {
Files.write(p4, info.getBytes("gb2312"), StandardOpenOption.APPEND); // APPEND追加
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
byte[] bytes = Files.readAllBytes(p4);
System.out.println(new String(bytes));
} catch (IOException e) {
e.printStackTrace();
}
// //复制文件
// try {
// Files.copy(p3, Paths.get("F:\\javatest\\lemon2.txt"),
// StandardCopyOption.REPLACE_EXISTING); //如果文件存在,则覆盖
// } catch (IOException e) {
// e.printStackTrace();
// }
// 移动文件
// try {
// Files.move(p3, Paths.get("F:\\javatest\\text\\lemon2.txt"), StandardCopyOption.REPLACE_EXISTING); // 如果文件存在,则替换
// } catch (IOException e) {
// e.printStackTrace();
// }
// 删除文件1 文件不存在 抛出异常
// try {
// Files.delete(Paths.get("F:\\javatest\\t0191f3eae97d3449ce.jpg"));
// } catch (IOException e) {
// e.printStackTrace();
// }
//删除文件2 存在删除 不存在 不抛出异常
try {
Files.deleteIfExists(Paths.get("F:\\javatest\\t0191f3eae97d3449ce.jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//创建目录
// try {
// Files.createDirectory(Paths.get("F:\\javatest\\SNM"));
// } catch (IOException e) {
// e.printStackTrace();
// }
//创建多级目录
try {
Files.createDirectories(Paths.get("F:\\javatest\\SNM1\\123"));
} catch (IOException e) {
e.printStackTrace();
}
//创建文件
try {
Files.createFile(Paths.get("F:\\javatest\\SNM1\\123.txt"));
} catch (IOException e) {
e.printStackTrace();
}
//添加前后缀 创建临时文件或临时目录
// Path newFile = Files.createTempDirectory(dir, prefix, attrs);
// Path newFile = Files.createTempDirectory(dir, prefix);
}
}