java 7 NIO2中文件系统支持软链接,硬链接的API,
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.FileAttribute;
import java.nio.file.attribute.PosixFileAttributes;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.util.Set;
public class NIO2FileLink {
/**
* @param args
*/
public static void main(String[] args) {
Path link = FileSystems.getDefault().getPath(
System.getProperty("user.home"), "www",
"pyweb.settings");
Path target = FileSystems.getDefault().getPath("testlink");
// 创建软链接
try {
Files.createSymbolicLink(link, target);
// 创建软链接时设置软链接的属性
PosixFileAttributes attrs = Files.readAttributes(target,
PosixFileAttributes.class);
FileAttribute<Set<PosixFilePermission>> attr = PosixFilePermissions
.asFileAttribute(attrs.permissions());
Files.createSymbolicLink(link, target, attr);
} catch (IOException | UnsupportedOperationException
| SecurityException e) {
if (e instanceof SecurityException) {
System.err.println("Permission denied!");
}
if (e instanceof UnsupportedOperationException) {
System.err.println("An unsupported operation was detected!");
}
if (e instanceof IOException) {
System.err.println("An I/O error occurred!");
}
System.err.println(e);
}
// 检查是否是软链接
boolean link_isSymbolicLink_1 = Files.isSymbolicLink(link);
boolean target_isSymbolicLink_1 = Files.isSymbolicLink(target);
System.out.println(link.toString() + " is a symbolic link ? "
+ link_isSymbolicLink_1);
System.out.println(target.toString() + " is a symbolic link ? "
+ target_isSymbolicLink_1);
try {
boolean link_isSymbolicLink_2 = (boolean) Files.getAttribute(link,
"basic:isSymbolicLink");
boolean target_isSymbolicLink_2 = (boolean) Files.getAttribute(
target, "basic:isSymbolicLink");
System.out.println(link.toString() + " is a symbolic link ? "
+ link_isSymbolicLink_2);
System.out.println(target.toString() + " is a symbolic link ? "
+ target_isSymbolicLink_2);
} catch (IOException | UnsupportedOperationException e) {
System.err.println(e);
}
//读取软链接对应的文件
try {
Path linkedpath = Files.readSymbolicLink(link);
System.out.println(linkedpath.toString());
} catch (IOException e) {
System.err.println(e);
}
// 创建硬链接
try {
Files.createLink(link, target);
System.out.println("The link was successfully created!");
} catch (IOException | UnsupportedOperationException
| SecurityException e) {
if (e instanceof SecurityException) {
System.err.println("Permission denied!");
}
if (e instanceof UnsupportedOperationException) {
System.err.println("An unsupported operation was detected!");
}
if (e instanceof IOException) {
System.err.println("An I/O error occured!");
}
System.err.println(e);
}
}
}
分享到:
相关推荐
### Pro Java 7 NIO2:深入理解Path类与文件系统操作 #### 一、引言 《Pro Java 7 NIO2》是一本专注于Java 7中的新I/O(NIO.2)特性的书籍,它介绍了如何利用Java 7的新特性来处理文件和网络操作。本书的核心在于...
在Java 7的NIO2(JSR203:Java平台上的更多新I/O API)更新中,`java.nio.file.Path` 类成为了核心组件之一,为开发者提供了更高效、更直观的文件系统操作接口。本文将详细解析 `Path` 类的功能与应用,帮助读者掌握...
《Pro Java 7 NIO》详细讲述了如何利用异步I/O API来开发异步socket应用程序,也包括了如何利用Java NIO.2中的FileVisitor API来开发递归文件操作,以及如何使用WatchService API和文件改变通知机制来监控文件系统的...
Java IO、NIO以及NIO.2是Java中用于处理输入/输出操作的三种主要机制。本书《Java IO, NIO and NIO.2》旨在深入浅出地介绍这些机制,同时书中内容均为英文。接下来将详细介绍这些知识点。 **Java IO** Java IO是...
根据提供的文件信息,“Pro Java 7 NIO.2.pdf”由Anghel Leonard于2011年编写,主要介绍了Java 7中的新输入/输出(NIO)API,特别是NIO.2(JSR 203)所带来的增强功能。这本书通过一系列章节详细讲解了如何使用NIO.2...
NIO2(Non-Blocking I/O)是一种高性能的I/O操作方式,自Java 7开始引入,提供了许多新的API和方法来处理文件操作。下面是对NIO2基础的介绍,包括文件路径、Path类简介、符号链接等知识点。 文件路径是指文件在文件...
在学习Java NIO时,可以参考提供的博客链接,其中详细讲述了Java IO流和NIO流的用法。通过实践和理解这些核心概念,你可以掌握如何在Java程序中有效地利用NIO进行I/O操作,提高程序的效率和可扩展性。
Java NIO提供了FileChannel用于文件操作,支持随机访问,可以进行文件的读写、映射到内存、文件大小的改变等操作。与标准IO相比,NIO的文件操作更高效且功能更强大。 5. **管道(Pipe)** 管道是两个线程间通信的...
Java NIO(New IO)是Java 1.4引入的一个新特性,它为Java提供了非阻塞I/O操作的能力,使得Java在处理I/O时更加高效。NIO与传统的BIO(Blocking I/O)模型相比,其核心在于它允许程序同时处理多个输入和输出流,提高...
NIO.2,又称为New I/O 2或Java NIO 2,是在Java 7中引入的进一步扩展,主要增加了文件系统操作的支持,包括异步I/O操作、文件通道、文件锁定以及对符号链接的支持。AsynchronousFileChannel是NIO.2中新增的异步I/O...
Java的`java.nio.file`包提供了丰富的文件操作接口,如`Files.setPosixFilePermissions()`和`Files.newFileChannel()`,可以用来设置权限和创建文件通道进行锁定。 7. **文件自动加密**:文件加密通常涉及对文件...
Java NIO(New I/O)是一种在Java 1.4版本中引入的API,它提供了与标准IO不同的I/O操作方式。NIO支持面向缓冲区的(Buffer-oriented)、基于通道的(Channel-based)I/O操作。它旨在通过使用更接近操作系统底层的I/O...
Java NIO(New I/O)类库是Java 1.4版本以后引入的新一代I/O机制,相比传统的I/O机制,NIO提供了高效、异步、多路复用的I/O操作模式。Selector机制是NIO类库中的一种核心机制,用于实现多个异步I/O操作的集中管理。 ...
《Java NIO》这本书主要探讨的是Java的非阻塞I/O模型,它是Java标准库提供的一种高效、低延迟的I/O处理方式。NIO(Non-blocking Input/Output)与传统的BIO(Blocking I/O)模式相比,更适用于高并发、大数据量的...
根据提供的文件信息,本文将围绕Java NIO(New Input/Output)的相关知识点进行详细解析,同时探讨相关的视频学习资源。 ### Java NIO简介 Java NIO(New Input/Output),即新输入输出,是Java 1.4版本引入的一个...
Java Socket和NIO(非阻塞I/O)是Java编程中的重要部分,它们在构建高性能、高并发的网络应用程序中发挥着关键作用。Socket是基于TCP/IP协议的应用层接口,而NIO则是一种I/O模型,它提供了不同于传统阻塞I/O的处理...
2. **NIO(非阻塞I/O)**:Java的`java.nio`包提供了一种更高效的方式来处理I/O操作,特别是对于大量数据的读写。NIO引入了通道(Channels)和缓冲区(Buffers)的概念,可以实现多路复用和非阻塞I/O,提高系统性能...
Java NIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上,过去,在打开一个I/O通道后,read()将一直等待在端口一边读取字节内容,如果没有内容进来,...