- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
The prototype of Files.createSymbolicLink()
是:
static Path createSymbolicLink(Path link, Path target,
FileAttribute<?>... attrs)
嗯...为什么?
符号链接(symbolic link)只不过是一个 inode ,其内容是一个指向...的字符串......好吧,无论如何。目标甚至可能根本无效。
出于好奇,我尝试了这个(是的,它以 root 身份运行,但这是故意的):
root@alustriel:/tmp# cat Test.java
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.*;
public final class Test {
public static void main(final String... args) throws IOException {
final UserPrincipalLookupService lookupService =
FileSystems.getDefault().getUserPrincipalLookupService();
final UserPrincipal user = lookupService.lookupPrincipalByName("fge");
final FileAttribute<UserPrincipal> attr =
new FileAttribute<UserPrincipal>() {
@Override
public String name() {
return "owner:owner";
}
@Override
public UserPrincipal value() {
return user;
}
};
final Path target = Paths.get("whocares, I don't exist anyway");
final Path symlink = Paths.get("/tmp/meh");
Files.createSymbolicLink(symlink, target, attr);
}
}
root@alustriel:/tmp# javac Test.java
root@alustriel:/tmp# java Test
Exception in thread "main" java.lang.UnsupportedOperationException: 'owner:owner' not supported as initial attribute
at sun.nio.fs.UnixFileModeAttribute.toUnixMode(UnixFileModeAttribute.java:74)
at sun.nio.fs.UnixFileSystemProvider.createSymbolicLink(UnixFileSystemProvider.java:440)
at java.nio.file.Files.createSymbolicLink(Files.java:996)
at Test.main(Test.java:41)
嗯,我有点预料到了。
我知道符号链接(symbolic link)的权限重要的唯一情况是在 Linux 的/proc/*/fd/中,因为符号链接(symbolic link)的权限与打开文件描述符的权限相匹配。但这是系统生成的符号链接(symbolic link),与用户可以生成的符号链接(symbolic link)完全不同。
是否存在任何操作系统,其中符号链接(symbolic link)的权限实际上以任何方式、形状或形式影响符号链接(symbolic link)和/或其目标的行为?
<小时/>编辑:好吧,我可以使用chown
更改符号链接(symbolic link)的所有者,但是......再说一遍,有什么意义?
最佳答案
Oracle 文档说这仅供将来使用:
The FileAttributes vararg enables you to specify initial file attributes that are set atomically when the link is created. However, this argument is intended for future use and is not currently implemented. (source; emphasis mine)
在 Mac 上,权限 seem to be settable ,尽管它们似乎没有多大作用。我创建了一个只能由 root 读取的文件,以及两个指向它的符号链接(symbolic link):一个是全局可读的,一个是只能由 root 读取的。我可以使用所有三个来cat
该文件,但是当我以用户身份运行它时,ls -l
仅列出了世界可读链接的链接目标:
-rwxrwxrwx 1 root wheel 7 Dec 21 21:32 actual
lrwxrwxrwx 1 root wheel 6 Dec 21 21:33 link_for_all -> actual
lrwx------ 1 root wheel 6 Dec 21 21:34 link_for_root
我找不到任何其他行为差异,但它是一些东西,所以也许您将来可以使用createSymbolicLink
来创建这样的符号链接(symbolic link).
关于java - Files.createSymbolicLink() 采用 FileAttribute<?> 数组作为参数;它在任何操作系统上都有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27595842/
C# 的新手,我不太明白下面的代码是如何确定文件是否只读的。特别是,(attributes & FileAttributes.ReadOnly) 如何计算为做或不做的事情 == FileAttribu
我想用 Files.createFile(path, FileAttributes...) 创建路径 如何获取一组默认的 FileAttributes 以在 Windows 上创建文件? 最佳答案 这
基本上在Files.createFile(Path fileName, FileAttribute... attrs );可以插入一系列属性。我知道以下可能性: Path path = Paths.g
迭代目录时调用 fileAttributes 方法的开销有多大? 特别是,我想检查正在枚举的路径是否是目录。使用 fileAttributes 字典还是文件管理器更好? (下面的例子) NSStrin
我试图仅获取顶级目录 NSDirectoryEnumerator *directoryEnumerator = [fileManager enumeratorAtURL:[NSURL URLWithS
我怎样才能让这个File myTempDir = Files.createTempDir(Path path, String prefix, FileAttribute)在Windows中工作。 我使
是否可以在使用 FileStream 创建文件时同时应用 FileAttributes?我想使用 FileAttributes.Temporary 文件属性为流写入创建文件。 最佳答案 您可以使用 F
这两种检查文件是否只读的方式有区别吗? Dim fi As New FileInfo("myfile.txt") ' getting it from FileInfo Dim ro As Boolea
这个问题在这里已经有了答案: Swift: Reading a plist from MainBundle and writing directly to Documents fails (1 个回
我没有在谷歌上找到任何示例...任何人都可以展示它是如何工作的吗?文件夹和文件何时加密,如何解密? 链接: FileAttributes Enumeration 最佳答案 FileAttributes
The prototype of Files.createSymbolicLink()是: static Path createSymbolicLink(Path link, Path target,
我想为枚举构造函数创建一个 Path 实例: /** Temporary paths. */ public enum PATHS { /** First temporary directory
System.IO.File.GetAttributes 方法仅对本地系统上的文件有效。在我的应用程序中,我试图通过 https://访问文件属性。如果有任何这样的类/方法(在 .net 中),请让我
我最近在 stackoverflow 上得到了一些很大的帮助。其中一个答案让我有些疑惑,由于评论框的限制,我觉得不应该得到解释。 请查看下面的代码。 if ((File.GetAttributes(f
我是一名优秀的程序员,十分优秀!