`

java7 NIO2(3) 文件链接操作

    博客分类:
  • java
 
阅读更多

  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

    ### Pro Java 7 NIO2:深入理解Path类与文件系统操作 #### 一、引言 《Pro Java 7 NIO2》是一本专注于Java 7中的新I/O(NIO.2)特性的书籍,它介绍了如何利用Java 7的新特性来处理文件和网络操作。本书的核心在于...

    PRO JAVA 7 NIO2

    在Java 7的NIO2(JSR203:Java平台上的更多新I/O API)更新中,`java.nio.file.Path` 类成为了核心组件之一,为开发者提供了更高效、更直观的文件系统操作接口。本文将详细解析 `Path` 类的功能与应用,帮助读者掌握...

    Pro Java 7 NIO

    《Pro Java 7 NIO》详细讲述了如何利用异步I/O API来开发异步socket应用程序,也包括了如何利用Java NIO.2中的FileVisitor API来开发递归文件操作,以及如何使用WatchService API和文件改变通知机制来监控文件系统的...

    Java IO, NIO and NIO.2

    Java IO、NIO以及NIO.2是Java中用于处理输入/输出操作的三种主要机制。本书《Java IO, NIO and NIO.2》旨在深入浅出地介绍这些机制,同时书中内容均为英文。接下来将详细介绍这些知识点。 **Java IO** Java IO是...

    Pro Java 7 NIO.2.pdf

    根据提供的文件信息,“Pro Java 7 NIO.2.pdf”由Anghel Leonard于2011年编写,主要介绍了Java 7中的新输入/输出(NIO)API,特别是NIO.2(JSR 203)所带来的增强功能。这本书通过一系列章节详细讲解了如何使用NIO.2...

    NIO2基础介绍

    NIO2(Non-Blocking I/O)是一种高性能的I/O操作方式,自Java 7开始引入,提供了许多新的API和方法来处理文件操作。下面是对NIO2基础的介绍,包括文件路径、Path类简介、符号链接等知识点。 文件路径是指文件在文件...

    Java NIO详解及源码下载

    在学习Java NIO时,可以参考提供的博客链接,其中详细讲述了Java IO流和NIO流的用法。通过实践和理解这些核心概念,你可以掌握如何在Java程序中有效地利用NIO进行I/O操作,提高程序的效率和可扩展性。

    Java NIO原理分析及代码实例

    Java NIO提供了FileChannel用于文件操作,支持随机访问,可以进行文件的读写、映射到内存、文件大小的改变等操作。与标准IO相比,NIO的文件操作更高效且功能更强大。 5. **管道(Pipe)** 管道是两个线程间通信的...

    JAVA-NIO程序设计完整实例

    Java NIO(New IO)是Java 1.4引入的一个新特性,它为Java提供了非阻塞I/O操作的能力,使得Java在处理I/O时更加高效。NIO与传统的BIO(Blocking I/O)模型相比,其核心在于它允许程序同时处理多个输入和输出流,提高...

    Java I/O, NIO and NIO.2

    NIO.2,又称为New I/O 2或Java NIO 2,是在Java 7中引入的进一步扩展,主要增加了文件系统操作的支持,包括异步I/O操作、文件通道、文件锁定以及对符号链接的支持。AsynchronousFileChannel是NIO.2中新增的异步I/O...

    java实现windows文件系统操作监控

    Java的`java.nio.file`包提供了丰富的文件操作接口,如`Files.setPosixFilePermissions()`和`Files.newFileChannel()`,可以用来设置权限和创建文件通道进行锁定。 7. **文件自动加密**:文件加密通常涉及对文件...

    java_NIO_入门

    Java NIO(New I/O)是一种在Java 1.4版本中引入的API,它提供了与标准IO不同的I/O操作方式。NIO支持面向缓冲区的(Buffer-oriented)、基于通道的(Channel-based)I/O操作。它旨在通过使用更接近操作系统底层的I/O...

    Java-NIO类库Selector机制解析.docx

    Java NIO(New I/O)类库是Java 1.4版本以后引入的新一代I/O机制,相比传统的I/O机制,NIO提供了高效、异步、多路复用的I/O操作模式。Selector机制是NIO类库中的一种核心机制,用于实现多个异步I/O操作的集中管理。 ...

    《Java NIO》Download Url

    《Java NIO》这本书主要探讨的是Java的非阻塞I/O模型,它是Java标准库提供的一种高效、低延迟的I/O处理方式。NIO(Non-blocking Input/Output)与传统的BIO(Blocking I/O)模式相比,更适用于高并发、大数据量的...

    JavaNio视频下载_百度云盘资源

    根据提供的文件信息,本文将围绕Java NIO(New Input/Output)的相关知识点进行详细解析,同时探讨相关的视频学习资源。 ### Java NIO简介 Java NIO(New Input/Output),即新输入输出,是Java 1.4版本引入的一个...

    java socket nio 研究

    Java Socket和NIO(非阻塞I/O)是Java编程中的重要部分,它们在构建高性能、高并发的网络应用程序中发挥着关键作用。Socket是基于TCP/IP协议的应用层接口,而NIO则是一种I/O模型,它提供了不同于传统阻塞I/O的处理...

    Java版文件系统

    2. **NIO(非阻塞I/O)**:Java的`java.nio`包提供了一种更高效的方式来处理I/O操作,特别是对于大量数据的读写。NIO引入了通道(Channels)和缓冲区(Buffers)的概念,可以实现多路复用和非阻塞I/O,提高系统性能...

    Java NIO原理和使用

    Java NIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上,过去,在打开一个I/O通道后,read()将一直等待在端口一边读取字节内容,如果没有内容进来,...

Global site tag (gtag.js) - Google Analytics