Java中的文件处理

2020-09-22  本文已影响0人  haha_writing

JavaSE 7中增加了Path接口和Files类,他们使用起来比JDK1.0中的File类方便很多。

Interface Path

Path是目录名的序列,可以包含或者不包含文件名。根据是否以根目录开头,可以分为绝对路径和相对路径。Path用于在文件系统中定位文件对象。

类Paths

Paths.get(String first, String ...more):这个静态方法,接收一个或者多个字符串,并将这些字符串通过操作系统默认的路径分隔符连接起来(Unix系统为"/",Windows为“\”)。返回结果为Path对象。如果结果不是一个合法的路径,抛出InvalidPathException。

Path absolute = Paths.get("/usr", "local");  
System.out.println(absolute);   //   output: /usr/local

Paths.get(URI uri):这个静态方法将给定的URI转化为Path对象。

Path方法

boolean isAbsolute():是否绝对路径。
Path getRoot():返回Path对象的root,如果没有,返回null。
Path getFilename() :返回该路径或者文件的名称,filename是路径中距离根目录最远的元素。
Path getParent():返回父目录。
int getnameCount():返回路径中名称的个数。
int getName(int index): 离根目录最近的名称,index为0,最远的为名称总的个数-1。
Path subpath(int beginIndex, int endIndex):从beginIndex开始,包含beginIndex的名称,以endIndex结束,但不含endIndex位置的名称。
boolean startsWith(Path other):Test if this Path start with the given Path.
boolean startsWith(String other):
boolean endWith(Path other): Test if this Path ends with the given Path.
boolean endWith(String other): 
Path resolve(Path other): p.resolve(q),如果q是一个绝对路径,返回other。否则,结果是p+q。
Path resolve(String other): 
Path resolveSibling(Path other): 相对于当前路径的父目录,生成一个目录。
Path resolveSibling(String other):
Path relativize(Path other):创建相对路径
Path toFile():返回一个File对象。

实例

     Path curPath = Paths.get("/usr","local","etc"); 
     System.out.println(curPath);  //output:  /usr/local/etc
     System.out.println(curPath.toString());  //output:  /usr/local/etc
     System.out.println(curPath.isAbsolute());  //output:true
     System.out.println(curPath.getRoot());     //output: /
     System.out.println(curPath.getFileName()); //output: etc
     System.out.println(curPath.getNameCount());//output: 3
     System.out.println(curPath.getParent());    //output: /usr/local
     System.out.println(curPath.getName(0));    //output: usr
     System.out.println(curPath.getName(1));    //output: local 
     System.out.println(curPath.getName(2));    //output: etc
     System.out.println(curPath.subpath(1, 2));    //output: local
     Path siblingPaths = curPath.resolveSibling("temp");
     System.out.println(siblingPaths); //output: /usr/local/temp
     System.out.println(curPath.relativize(siblingPaths));//output: ../temp

Files

Files类提供了常见的文件操作,读写文件,创建、移动,复制、删除文件等。

创建路径和文件

Files.createDirectory(path) : 如果中间目录不存在,会报错。
Files.createDirectories(path):如果中间目录不存在,会自动创建。
Files.createFile(path): 如果文件存在,抛出异常。
Files.createTempFile(dir, prefiex, suffix);
Files.createTempDirectory(prefix);

读写文件

static bye[] readAllBytes(Path path):
static List<String> readAllLines(Path path, Charset charset)
static Path write(Path path, byte[] butes, OpenOption... options)

获取文件信息

• static boolean exists(Pathpath)
• static boolean isHidden(Pathpath)
• static boolean isReadable(Pathpath)
• static boolean isWritable(Pathpath)
• static boolean isExecutable(Pathpath)
• static boolean isRegularFile(Pathpath)
• static boolean isDirectory(Pathpath)
• static boolean isSymbolicLink(Pathpath)
• static long size(Path path)
• static FileTime getLastModifiedTime(Path path, LinkOption... options)

目录遍历

静态方法Files.list()方法可读取目录下所有文件,返回一个Stream<Path>。该方法不会进入子目录。如果要进入子目录,使用Files.walk()方法。

try(Stream<Path> entries = Files.list(directory)){
  ...  
}

类File

    String[] list(): 返回目录下文件名,不包含完全路径。
    File[] listFiles():返回目录下文件,包含完全路径。
上一篇 下一篇

猜你喜欢

热点阅读