Java 类java.nio.file.attribute.PosixFileAttributes 实例源码
项目:cyberduck
文件:LocalAttributesFinderFeatureTest.java
@Test
public void testConvert() throws Exception {
final LocalSession session = new LocalSession(new Host(new LocalProtocol(), new LocalProtocol().getDefaultHostname()));
if(session.isPosixFilesystem()) {
session.open(new DisabledHostKeyCallback(), new DisabledLoginCallback());
session.login(new DisabledPasswordStore(), new DisabledLoginCallback(), new DisabledCancelCallback());
final Path file = new Path(new LocalHomeFinderFeature(session).find(), UUID.randomUUID().toString(), EnumSet.of(Path.Type.file));
new LocalTouchFeature(session).touch(file, new TransferStatus());
final java.nio.file.Path local = session.toPath(file);
final PosixFileAttributes posixAttributes = Files.readAttributes(local, PosixFileAttributes.class);
final LocalAttributesFinderFeature finder = new LocalAttributesFinderFeature(session);
assertEquals(PosixFilePermissions.toString(posixAttributes.permissions()), finder.find(file).getPermission().getSymbol());
Files.setPosixFilePermissions(local, PosixFilePermissions.fromString("rw-------"));
assertEquals("rw-------", finder.find(file).getPermission().getSymbol());
Files.setPosixFilePermissions(local, PosixFilePermissions.fromString("rwxrwxrwx"));
assertEquals("rwxrwxrwx", finder.find(file).getPermission().getSymbol());
Files.setPosixFilePermissions(local, PosixFilePermissions.fromString("rw-rw----"));
assertEquals("rw-rw----", finder.find(file).getPermission().getSymbol());
assertEquals(posixAttributes.size(), finder.find(file).getSize());
assertEquals(posixAttributes.lastModifiedTime().toMillis(), finder.find(file).getModificationDate());
assertEquals(posixAttributes.creationTime().toMillis(), finder.find(file).getCreationDate());
assertEquals(posixAttributes.lastAccessTime().toMillis(), finder.find(file).getAccessedDate());
new LocalDeleteFeature(session).delete(Collections.singletonList(file), new DisabledLoginCallback(), new Delete.DisabledCallback());
}
}
项目:fdt
文件:FDTSession.java
private static String getFileListEntry(File fileInDir) {
StringBuilder sb = new StringBuilder();
try {
PosixFileAttributes fa = Files.readAttributes(fileInDir.toPath(), PosixFileAttributes.class, LinkOption.NOFOLLOW_LINKS);
sb.append(fa.isDirectory() ? "d" : fa.isSymbolicLink() ? "l" : fa.isRegularFile() ? "f" : "-");
sb.append(fileInDir.canRead() ? "r" : "-");
sb.append(fileInDir.canWrite() ? "w" : "-");
sb.append(fileInDir.canExecute() ? "x" : "-");
sb.append("\t");
sb.append(fa.owner());
sb.append(fa.owner().getName().length() < 4 ? "\t\t" : "\t");
sb.append(fa.group());
sb.append(fa.group().getName().length() < 4 ? "\t\t" : "\t");
sb.append(fa.size());
sb.append(String.valueOf(fa.size()).length() < 4 ? "\t\t" : "\t");
sb.append(fa.lastModifiedTime().toString());
sb.append("\t");
sb.append(fa.isDirectory() ? fileInDir.getName() + "/" : fileInDir.getName());
} catch (IOException e) {
logger.log(Level.WARNING, "Failed to get file attributes", e);
}
logger.info(sb.toString());
return sb.toString();
}
项目:fim
文件:ResetFileAttributesCommand.java
private int resetFileAttributes(Context context, FileState fileState, Path file) throws IOException {
boolean attributesModified = false;
try {
BasicFileAttributes attributes;
if (SystemUtils.IS_OS_WINDOWS) {
DosFileAttributes dosFileAttributes = Files.readAttributes(file, DosFileAttributes.class);
attributes = dosFileAttributes;
attributesModified = resetDosPermissions(context, file, fileState, dosFileAttributes) || attributesModified;
} else {
PosixFileAttributes posixFileAttributes = Files.readAttributes(file, PosixFileAttributes.class);
attributes = posixFileAttributes;
attributesModified = resetPosixPermissions(file, fileState, posixFileAttributes) || attributesModified;
}
attributesModified = resetCreationTime(file, fileState, attributes) || attributesModified;
attributesModified = resetLastModified(file, fileState, attributes) || attributesModified;
attributesModified = resetSELinux(context, file, fileState) || attributesModified;
} catch (Exception ex) {
Logger.error(ex.getMessage());
}
return attributesModified ? 1 : 0;
}
项目:ignite
文件:LocalIgfsSecondaryFileSystem.java
/** {@inheritDoc} */
@Override public IgfsFile info(final IgfsPath path) {
File file = fileForPath(path);
if (!file.exists())
return null;
boolean isDir = file.isDirectory();
PosixFileAttributes attrs = LocalFileSystemUtils.posixAttributes(file);
Map<String, String> props = LocalFileSystemUtils.posixAttributesToMap(attrs);
BasicFileAttributes basicAttrs = LocalFileSystemUtils.basicAttributes(file);
if (isDir) {
return new LocalFileSystemIgfsFile(path, false, true, 0,
basicAttrs.lastAccessTime().toMillis(), basicAttrs.lastModifiedTime().toMillis(), 0, props);
}
else {
return new LocalFileSystemIgfsFile(path, file.isFile(), false, 0,
basicAttrs.lastAccessTime().toMillis(), basicAttrs.lastModifiedTime().toMillis(), file.length(), props);
}
}
项目:ignite
文件:LocalFileSystemUtils.java
/**
* Get POSIX attributes for file.
*
* @param file File.
* @return PosixFileAttributes.
*/
@Nullable public static PosixFileAttributes posixAttributes(File file) {
PosixFileAttributes attrs = null;
try {
PosixFileAttributeView view = Files.getFileAttributeView(file.toPath(), PosixFileAttributeView.class);
if (view != null)
attrs = view.readAttributes();
}
catch (IOException e) {
throw new IgfsException("Failed to read POSIX attributes: " + file.getAbsolutePath(), e);
}
return attrs;
}
项目:bamboo
文件:ImportJob.java
private void constructCrawlBundle(Path src, Path dest) throws IOException {
Path zipFile = dest.resolve("crawl-bundle.zip");
try (ZipOutputStream zip = new ZipOutputStream(Files.newOutputStream(zipFile))) {
Files.walk(src)
.filter(ImportJob::shouldIncludeInCrawlBundle)
.forEachOrdered((path) -> {
ZipEntry entry = new ZipEntry(src.relativize(path).toString());
try {
PosixFileAttributes attr = Files.readAttributes(path, PosixFileAttributes.class);
entry.setCreationTime(attr.creationTime());
entry.setLastModifiedTime(attr.lastModifiedTime());
entry.setLastAccessTime(attr.lastAccessTime());
entry.setSize(attr.size());
zip.putNextEntry(entry);
Files.copy(path, zip);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
});
}
}
项目:yajsync
文件:PosixFileAttributeManager.java
@Override
public RsyncFileAttributes stat(Path path) throws IOException
{
PosixFileAttributes attrs = Files.readAttributes(path, PosixFileAttributes.class,
LinkOption.NOFOLLOW_LINKS);
UserPrincipal userPrincipal = attrs.owner();
String userName = userPrincipal.getName();
GroupPrincipal groupPrincipal = attrs.group();
String groupName = groupPrincipal.getName();
_nameToUserPrincipal.putIfAbsent(userName, userPrincipal);
_nameToGroupPrincipal.putIfAbsent(groupName, groupPrincipal);
return new RsyncFileAttributes(toMode(attrs),
attrs.size(),
attrs.lastModifiedTime().to(TimeUnit.SECONDS),
new User(userName, _defaultUserId),
new Group(groupName, _defaultGroupId));
}
项目:EclipseCommander
文件:PathUtils.java
/**
* @param path
* @return
*/
public static String getPosixAttributesString(Path path) {
PosixFileAttributeView posixView = Files.getFileAttributeView(path, PosixFileAttributeView.class);
StringBuilder attrs = new StringBuilder();
try {
// + all basic attributes
PosixFileAttributes posixAttrs = posixView.readAttributes();
if (posixAttrs != null) {
attrs.append(PosixFilePermissions.toString(posixAttrs.permissions()));
}
}
catch (IOException e) {
log.warn("unable to read Posix file attributes.", e); //$NON-NLS-1$
}
return attrs.toString();
}
项目:jsr203-hadoop
文件:HadoopPosixFileAttributeView.java
@Override
public Map<String, Object> readAttributes(String attributes,
LinkOption[] options) throws IOException {
PosixFileAttributes zfas = readAttributes();
LinkedHashMap<String, Object> map = new LinkedHashMap<>();
if ("*".equals(attributes)) {
for (AttrID id : AttrID.values()) {
map.put(id.name(), attribute(id, zfas));
}
} else {
String[] as = attributes.split(",");
for (String a : as) {
map.put(a, attribute(AttrID.valueOf(a), zfas));
}
}
return map;
}
项目:jsr203-hadoop
文件:HadoopFileSystemProvider.java
@SuppressWarnings("unchecked")
@Override
public <A extends BasicFileAttributes> A readAttributes(Path path,
Class<A> type, LinkOption... options)
throws IOException {
if (type == BasicFileAttributes.class ||
type == HadoopBasicFileAttributes.class) {
return (A) toHadoopPath(path).getAttributes();
}
if (type == PosixFileAttributes.class) {
return (A) toHadoopPath(path).getPosixAttributes();
}
throw new UnsupportedOperationException("readAttributes:" + type.getName());
}
项目:niotest
文件:UnixBuilder.java
public UnixBuilder( FSDescription descr, T t ) {
super( descr, t );
PathLimits pathLimits = new PathLimits( OS.UNIX );
PathSpec pathSpec = new PathSpecUnix();
descr.props.put( Tests10PathWithContent.ONE_CHAR_COUNT, pathLimits.getBigChar() );
descr.props.put( Tests10PathWithContent.MAX_FILENAME_LENGTH, pathSpec.getMaxFilenameLength() );
descr.props.put( Tests10PathWithContent.MAX_PATH_LENGTH, pathSpec.getMaxPathLength() );
descr.props.put( Tests10PathWithContent.GET_FILENAME_LENGTH, (Function<String,Integer>)pathSpec::getFilenameLength );
descr.props.put( Tests10PathWithContent.GET_PATH_LENGTH, (Function<String,Integer>)pathSpec::getPathLength );
// descr.removeTopic( LimitedPath.class ); theory but linux c limits
descr.removeTopic( Windows.class );
descr.removeTopic( DosAttributesT.class );
descr.removeTopic( CaseInsensitive.class );
descr.removeTopic( NonCasePreserving.class );
descr.attributeDescriptions.put( "posix", attributeBuilding( Posix.class, "posix", PosixFileAttributeView.class, PosixFileAttributes.class ).
addAttribute( "owner", PosixFileAttributes::owner ).
addAttribute( "permissions", PosixFileAttributes::permissions ).
addAttribute( "group", PosixFileAttributes::group ).
build());
}
项目:buck-cutom
文件:ProjectFilesystemTest.java
@Test
public void testCreateReadOnlyFileSetsPermissions() throws IOException {
Path path = Paths.get("hello.txt");
ImmutableSet<PosixFilePermission> permissions =
ImmutableSet.<PosixFilePermission>of(
PosixFilePermission.OWNER_READ,
PosixFilePermission.GROUP_READ,
PosixFilePermission.OTHERS_READ);
filesystem.writeContentsToPath(
"hello world",
path,
PosixFilePermissions.asFileAttribute(permissions));
// The umask may restrict the actual permissions on the filesystem:
// https://fburl.com/26569549
// So the best we can do is to check that the actual permissions are a
// strict subset of the expected permissions.
PosixFileAttributes attrs = filesystem.readAttributes(path, PosixFileAttributes.class);
assertTrue(permissions.containsAll(attrs.permissions()));
}
项目:buck
文件:DefaultProjectFilesystemTest.java
@Test
public void testCreateReadOnlyFileSetsPermissions() throws IOException {
Assume.assumeTrue(FileSystems.getDefault().supportedFileAttributeViews().contains("posix"));
Path path = Paths.get("hello.txt");
ImmutableSet<PosixFilePermission> permissions =
ImmutableSet.of(
PosixFilePermission.OWNER_READ,
PosixFilePermission.GROUP_READ,
PosixFilePermission.OTHERS_READ);
filesystem.writeContentsToPath(
"hello world", path, PosixFilePermissions.asFileAttribute(permissions));
// The umask may restrict the actual permissions on the filesystem:
// https://fburl.com/26569549
// So the best we can do is to check that the actual permissions are a
// strict subset of the expected permissions.
PosixFileAttributes attrs = filesystem.readAttributes(path, PosixFileAttributes.class);
assertTrue(permissions.containsAll(attrs.permissions()));
}
项目:incubator-servicecomb-java-chassis
文件:FilePerm.java
/**
* 设置文件权限。前提:必须支持PosixFileAttributeView.
*/
public static void setFilePerm(File file, String perm) {
if (filePermSupported()) {
try {
Set<PosixFilePermission> perms = PosixFilePermissions.fromString(perm);
PosixFileAttributes attr = Files.readAttributes(file.toPath(), PosixFileAttributes.class);
attr.permissions().clear();
Files.setPosixFilePermissions(file.toPath(), perms);
} catch (IOException e) {
throw new IllegalStateException(e);
}
}
}
项目:elasticsearch_my
文件:InstallPluginCommand.java
/**
* Copies the files from {@code tmpConfigDir} into {@code destConfigDir}.
* Any files existing in both the source and destination will be skipped.
*/
private void installConfig(PluginInfo info, Path tmpConfigDir, Path destConfigDir) throws Exception {
if (Files.isDirectory(tmpConfigDir) == false) {
throw new UserException(ExitCodes.IO_ERROR, "config in plugin " + info.getName() + " is not a directory");
}
Files.createDirectories(destConfigDir);
setFileAttributes(destConfigDir, CONFIG_DIR_PERMS);
final PosixFileAttributeView destConfigDirAttributesView =
Files.getFileAttributeView(destConfigDir.getParent(), PosixFileAttributeView.class);
final PosixFileAttributes destConfigDirAttributes =
destConfigDirAttributesView != null ? destConfigDirAttributesView.readAttributes() : null;
if (destConfigDirAttributes != null) {
setOwnerGroup(destConfigDir, destConfigDirAttributes);
}
try (DirectoryStream<Path> stream = Files.newDirectoryStream(tmpConfigDir)) {
for (Path srcFile : stream) {
if (Files.isDirectory(srcFile)) {
throw new UserException(ExitCodes.DATA_ERROR, "Directories not allowed in config dir for plugin " + info.getName());
}
Path destFile = destConfigDir.resolve(tmpConfigDir.relativize(srcFile));
if (Files.exists(destFile) == false) {
Files.copy(srcFile, destFile);
setFileAttributes(destFile, CONFIG_FILES_PERMS);
if (destConfigDirAttributes != null) {
setOwnerGroup(destFile, destConfigDirAttributes);
}
}
}
}
IOUtils.rm(tmpConfigDir); // clean up what we just copied
}
项目:elasticsearch_my
文件:InstallPluginCommand.java
private static void setOwnerGroup(final Path path, final PosixFileAttributes attributes) throws IOException {
Objects.requireNonNull(attributes);
PosixFileAttributeView fileAttributeView = Files.getFileAttributeView(path, PosixFileAttributeView.class);
assert fileAttributeView != null;
fileAttributeView.setOwner(attributes.owner());
fileAttributeView.setGroup(attributes.group());
}
项目:ats-framework
文件:LocalFileSystemOperations.java
/**
*
* @param filename the file name
* @return the file owner
* @throws FileSystemOperationException
*/
private String getOwner(
String filename ) {
try {
UserPrincipal owner = Files.readAttributes( new File( filename ).toPath(),
PosixFileAttributes.class, LinkOption.NOFOLLOW_LINKS )
.owner();
return owner.getName();
} catch( Exception e ) {
throw new FileSystemOperationException( "Could not get owner for '" + filename + "'", e );
}
}
项目:ats-framework
文件:LocalFileSystemOperations.java
/**
*
* @param filename the file name
* @return the file group name
* @throws FileSystemOperationException
*/
private String getGroup(
String filename ) {
try {
GroupPrincipal group = Files.readAttributes( new File( filename ).toPath(),
PosixFileAttributes.class,
LinkOption.NOFOLLOW_LINKS )
.group();
return group.getName();
} catch( Exception e ) {
throw new FileSystemOperationException( "Could not get group for '" + filename + "'", e );
}
}
项目:cyberduck
文件:LocalAttributesFinderFeature.java
protected PathAttributes convert(final java.nio.file.Path file) throws IOException {
final boolean isPosix = session.isPosixFilesystem();
final PathAttributes attributes = new PathAttributes();
final Class<? extends BasicFileAttributes> provider = isPosix ? PosixFileAttributes.class : DosFileAttributes.class;
final BasicFileAttributes a = Files.readAttributes(file, provider, LinkOption.NOFOLLOW_LINKS);
if(Files.isRegularFile(file)) {
attributes.setSize(a.size());
}
attributes.setModificationDate(a.lastModifiedTime().toMillis());
attributes.setCreationDate(a.creationTime().toMillis());
attributes.setAccessedDate(a.lastAccessTime().toMillis());
if(isPosix) {
attributes.setOwner(((PosixFileAttributes) a).owner().getName());
attributes.setGroup(((PosixFileAttributes) a).group().getName());
attributes.setPermission(new Permission(PosixFilePermissions.toString(((PosixFileAttributes) a).permissions())));
}
else {
Permission.Action actions = Permission.Action.none;
if(Files.isReadable(file)) {
actions = actions.or(Permission.Action.read);
}
if(Files.isWritable(file)) {
actions = actions.or(Permission.Action.write);
}
if(Files.isExecutable(file)) {
actions = actions.or(Permission.Action.execute);
}
attributes.setPermission(new Permission(
actions, Permission.Action.none, Permission.Action.none
));
}
return attributes;
}
项目:cyberduck
文件:LocalAttributes.java
@Override
public Permission getPermission() {
if(FileSystems.getDefault().supportedFileAttributeViews().contains("posix")) {
final BasicFileAttributes attributes;
try {
return new LocalPermission(PosixFilePermissions.toString(Files.readAttributes(Paths.get(path), PosixFileAttributes.class, LinkOption.NOFOLLOW_LINKS).permissions()));
}
catch(IOException e) {
return Permission.EMPTY;
}
}
return Permission.EMPTY;
}
项目:memory
文件:AllocateDirectMap.java
static final boolean isFileReadOnly(final File file) {
if (System.getProperty("os.name").startsWith("Windows")) {
return !file.canWrite();
}
//All Unix-like OSes
final Path path = Paths.get(file.getAbsolutePath());
PosixFileAttributes attributes = null;
try {
attributes = Files.getFileAttributeView(path, PosixFileAttributeView.class).readAttributes();
} catch (final IOException e) {
// File presence is guaranteed. Ignore
e.printStackTrace();
}
if (attributes == null) { return false; }
// A file is read-only in Linux-derived OSes only when it has 0444 permissions.
final Set<PosixFilePermission> permissions = attributes.permissions();
int bits = 0;
bits |= ((permissions.contains(PosixFilePermission.OWNER_READ)) ? 1 << 8 : 0);
bits |= ((permissions.contains(PosixFilePermission.OWNER_WRITE)) ? 1 << 7 : 0);
bits |= ((permissions.contains(PosixFilePermission.OWNER_EXECUTE)) ? 1 << 6 : 0);
bits |= ((permissions.contains(PosixFilePermission.GROUP_READ)) ? 1 << 5 : 0);
bits |= ((permissions.contains(PosixFilePermission.GROUP_WRITE)) ? 1 << 4 : 0);
bits |= ((permissions.contains(PosixFilePermission.GROUP_EXECUTE)) ? 1 << 3 : 0);
bits |= ((permissions.contains(PosixFilePermission.OTHERS_READ)) ? 1 << 2 : 0);
bits |= ((permissions.contains(PosixFilePermission.OTHERS_WRITE)) ? 1 << 1 : 0);
bits |= ((permissions.contains(PosixFilePermission.OTHERS_EXECUTE)) ? 1 : 0);
//System.out.println(Util.zeroPad(Integer.toBinaryString(bits), 32));
//System.out.println(Util.zeroPad(Integer.toOctalString(bits), 4));
// Here we are going to ignore the Owner Write & Execute bits to allow root/owner testing.
return ((bits & 0477) == 0444);
}
项目:DigitalMediaServer
文件:FileUtil.java
public static boolean isUnixStickyBit(Path path) throws IOException, InvalidFileSystemException {
PosixFileAttributes attr = Files.readAttributes(path, PosixFileAttributes.class);
try {
Field st_modeField = attr.getClass().getDeclaredField("st_mode");
st_modeField.setAccessible(true);
int st_mode = st_modeField.getInt(attr);
return (st_mode & S_ISVTX) > 0;
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
throw new InvalidFileSystemException("File is not on a Unix file system: " + e.getMessage(), e);
}
}
项目:ChromeForensics
文件:Utils.java
/**
*
* @param fileLoc
* @return
*/
public static Map<String, String> getFileMetadata(Path fileLoc) {
Map<String, String> linkedHashMap = new LinkedHashMap<>();
try {
DosFileAttributes dosFileAttr = Files.readAttributes(fileLoc, DosFileAttributes.class);
linkedHashMap.put("File Name", fileLoc.getFileName().toString());
linkedHashMap.put("File Location", fileLoc.toString());
linkedHashMap.put("File Size", readableFileSize(dosFileAttr.size()));
linkedHashMap.put("Creation Time", getDateTime(dosFileAttr.creationTime()));
linkedHashMap.put("Last Accessed Time", getDateTime(dosFileAttr.lastAccessTime()));
linkedHashMap.put("Last Modified Time", getDateTime(dosFileAttr.lastModifiedTime()));
linkedHashMap.put("Is Directory?", dosFileAttr.isDirectory() ? "True" : "False");
linkedHashMap.put("Is Regular File?", dosFileAttr.isRegularFile() ? "True" : "False");
linkedHashMap.put("Is Symbolic Link?", dosFileAttr.isSymbolicLink() ? "True" : "False");
linkedHashMap.put("Is Archive?", dosFileAttr.isArchive() ? "True" : "False");
linkedHashMap.put("Is Hidden File?", dosFileAttr.isHidden() ? "True" : "False");
linkedHashMap.put("Is ReadOnly?", dosFileAttr.isReadOnly() ? "True" : "False");
linkedHashMap.put("Is System File?", dosFileAttr.isSystem() ? "True" : "False");
if (getOsName().equals("Linux")) {
PosixFileAttributes attr = Files.readAttributes(fileLoc, PosixFileAttributes.class);
String posixPerm = String.format("%s %s %s%n", attr.owner().getName(), attr.group().getName(),
PosixFilePermissions.toString(attr.permissions()));
linkedHashMap.put("Posix", posixPerm);
}
} catch (UnsupportedOperationException | IOException ex) {
System.err.println(ex.getMessage());
}
return linkedHashMap;
}
项目:pravega
文件:FileSystemStorage.java
private SegmentProperties doGetStreamSegmentInfo(String streamSegmentName) throws IOException {
long traceId = LoggerHelpers.traceEnter(log, "getStreamSegmentInfo", streamSegmentName);
PosixFileAttributes attrs = Files.readAttributes(Paths.get(config.getRoot(), streamSegmentName),
PosixFileAttributes.class);
StreamSegmentInformation information = StreamSegmentInformation.builder()
.name(streamSegmentName)
.length(attrs.size())
.sealed(!(attrs.permissions().contains(OWNER_WRITE)))
.lastModified(new ImmutableDate(attrs.creationTime().toMillis()))
.build();
LoggerHelpers.traceLeave(log, "getStreamSegmentInfo", traceId, streamSegmentName);
return information;
}
项目:jfiles
文件:FileStruct.java
/**
* Helper method to rwx stringify POSIX permissions.
* @param path path of object
* @param attrs POSIX attributes object
* @return rwx permissions as string
*/
private String stringifyPermissions(Path path, PosixFileAttributes attrs) {
String permissions = "";
//Type descriptor
if (Files.isDirectory(path)) {
permissions += "d";
} else if (Files.isSymbolicLink(path)) {
permissions += "l";
} else if (Files.isRegularFile(path)) {
permissions += "-";
} else {
permissions += " ";
}
//Permissions
permissions += attrs.permissions().contains(PosixFilePermission.OWNER_READ) ? "r" : "-";
permissions += attrs.permissions().contains(PosixFilePermission.OWNER_WRITE) ? "w" : "-";
permissions += attrs.permissions().contains(PosixFilePermission.OWNER_EXECUTE) ? "x" : "-";
permissions += attrs.permissions().contains(PosixFilePermission.GROUP_READ) ? "r" : "-";
permissions += attrs.permissions().contains(PosixFilePermission.GROUP_WRITE) ? "w" : "-";
permissions += attrs.permissions().contains(PosixFilePermission.GROUP_EXECUTE) ? "x" : "-";
permissions += attrs.permissions().contains(PosixFilePermission.OTHERS_READ) ? "r" : "-";
permissions += attrs.permissions().contains(PosixFilePermission.OTHERS_WRITE) ? "w" : "-";
permissions += attrs.permissions().contains(PosixFilePermission.OTHERS_EXECUTE) ? "x" : "-";
return permissions;
}
项目:javacuriosities
文件:Lesson06FileAttributes.java
public static void main(String[] args) {
try {
Path path = Paths.get("metadata.txt");
Files.deleteIfExists(path);
Files.createFile(path);
BasicFileAttributeView basicView = Files.getFileAttributeView(path, BasicFileAttributeView.class);
BasicFileAttributes basicAttributes = basicView.readAttributes();
boolean isDirectory = basicAttributes.isDirectory();
FileTime lastModifiedTime = basicAttributes.lastModifiedTime();
System.out.println(isDirectory);
System.out.println(lastModifiedTime);
PosixFileAttributeView posixView = Files.getFileAttributeView(path, PosixFileAttributeView.class);
PosixFileAttributes posixAttributes = posixView.readAttributes();
GroupPrincipal group = posixAttributes.group();
Set<PosixFilePermission> permissions = posixAttributes.permissions();
permissions.add(PosixFilePermission.OWNER_EXECUTE);
posixView.setPermissions(permissions);
System.out.println(group);
} catch (IOException e) {
// Log and Handle exception
e.printStackTrace();
}
}
项目:fim
文件:FileHasher.java
private void hashFilesInQueue() throws InterruptedException {
Path file;
while ((file = filesToHashQueue.poll(100, TimeUnit.MILLISECONDS)) != null) {
try {
BasicFileAttributes attributes;
List<Attribute> fileAttributes = null;
if (SystemUtils.IS_OS_WINDOWS) {
DosFileAttributes dosFileAttributes = Files.readAttributes(file, DosFileAttributes.class);
fileAttributes = addAttribute(fileAttributes, FileAttribute.DosFilePermissions, DosFilePermissions.toString(dosFileAttributes));
attributes = dosFileAttributes;
} else {
PosixFileAttributes posixFileAttributes = Files.readAttributes(file, PosixFileAttributes.class);
fileAttributes = addAttribute(fileAttributes, FileAttribute.PosixFilePermissions, PosixFilePermissions.toString(posixFileAttributes.permissions()));
if (SELinux.ENABLED) {
fileAttributes = addAttribute(fileAttributes, FileAttribute.SELinuxLabel, SELinux.getLabel(context, file));
}
attributes = posixFileAttributes;
}
hashProgress.updateOutput(attributes.size());
FileHash fileHash = hashFile(file, attributes.size());
String normalizedFileName = FileUtil.getNormalizedFileName(file);
String relativeFileName = FileUtil.getRelativeFileName(rootDir, normalizedFileName);
fileStates.add(new FileState(relativeFileName, attributes, fileHash, fileAttributes));
} catch (Exception ex) {
Logger.newLine();
Logger.error("Skipping - Error hashing file '" + file + "'", ex, context.isDisplayStackTrace());
}
}
}
项目:fim
文件:ResetFileAttributesCommand.java
private boolean resetPosixPermissions(Path file, FileState fileState, PosixFileAttributes posixFileAttributes) throws IOException {
String permissions = PosixFilePermissions.toString(posixFileAttributes.permissions());
String previousPermissions = getAttribute(fileState, FileAttribute.PosixFilePermissions);
if (previousPermissions != null && !Objects.equals(permissions, previousPermissions)) {
Set<PosixFilePermission> permissionSet = PosixFilePermissions.fromString(previousPermissions);
Files.getFileAttributeView(file, PosixFileAttributeView.class).setPermissions(permissionSet);
Logger.out.printf("Set permissions: %s \t%s -> %s%n", fileState.getFileName(), permissions, previousPermissions);
return true;
}
return false;
}
项目:ParallelGit
文件:PosixFileAttributesTest.java
@Test
public void getPermissionOfFile_shouldReturnNotNull() throws IOException {
writeToCache("/file.txt");
commitToMaster();
initGitFileSystem();
PosixFileAttributes attributes = readPosixAttributes("/file.txt");
assertNotNull(attributes.permissions());
}
项目:ParallelGit
文件:PosixFileAttributesTest.java
@Test
public void getPermissionOfFile_shouldContainOwnerRead() throws IOException {
writeToCache("/file.txt");
commitToMaster();
initGitFileSystem();
PosixFileAttributes attributes = readPosixAttributes("/file.txt");
Collection permissions = (Collection) attributes.permissions();
assertTrue(permissions.contains(PosixFilePermission.OWNER_READ));
}
项目:ParallelGit
文件:PosixFileAttributesTest.java
@Test
public void getPermissionOfFile_shouldContainOwnerWrite() throws IOException {
writeToCache("/file.txt");
commitToMaster();
initGitFileSystem();
PosixFileAttributes attributes = readPosixAttributes("/file.txt");
Collection permissions = (Collection) attributes.permissions();
assertTrue(permissions.contains(PosixFilePermission.OWNER_WRITE));
}
项目:ParallelGit
文件:PosixFileAttributesTest.java
@Test
public void getPermissionOfFile_shouldNotContainOwnerExecute() throws IOException {
writeToCache("/file.txt");
commitToMaster();
initGitFileSystem();
PosixFileAttributes attributes = readPosixAttributes("/file.txt");
Collection permissions = (Collection) attributes.permissions();
assertFalse(permissions.contains(OWNER_EXECUTE));
}
项目:ParallelGit
文件:PosixFileAttributesTest.java
@Test
public void getPermissionOfExecutableFile_shouldContainOwnerExecute() throws IOException {
writeToCache("/file.txt", someBytes(), EXECUTABLE_FILE);
commitToMaster();
initGitFileSystem();
PosixFileAttributes attributes = readPosixAttributes("/file.txt");
Collection permissions = (Collection) attributes.permissions();
assertTrue(permissions.contains(OWNER_EXECUTE));
}
项目:ParallelGit
文件:PosixFileAttributesTest.java
@Test
public void getOwnerOfFile_shouldReturnNull() throws IOException {
writeToCache("/file.txt");
commitToMaster();
initGitFileSystem();
PosixFileAttributes attributes = readPosixAttributes("/file.txt");
assertNull(attributes.owner());
}
项目:ParallelGit
文件:PosixFileAttributesTest.java
@Test
public void getGroupOfFile_shouldReturnNull() throws IOException {
writeToCache("/file.txt");
commitToMaster();
initGitFileSystem();
PosixFileAttributes attributes = readPosixAttributes("/file.txt");
assertNull(attributes.group());
}
项目:Pushjet-Android
文件:PosixJdk7FilePermissionHandler.java
public int getUnixMode(File file) {
try {
final PosixFileAttributes posixFileAttributes = Files.readAttributes(file.toPath(), PosixFileAttributes.class);
return convertToInt(posixFileAttributes.permissions());
}catch (Exception e) {
throw new NativeIntegrationException(String.format("Failed to read File permissions for %s", file.getAbsolutePath()), e);
}
}
项目:ignite
文件:IgfsLocalSecondaryFileSystemTestAdapter.java
/** {@inheritDoc} */
@Override public Map<String, String> properties(final String path) throws IOException {
Path p = path(path);
PosixFileAttributes attrs = Files.getFileAttributeView(p, PosixFileAttributeView.class).readAttributes();
Map<String, String> props = new HashMap<>();
props.put(IgfsUtils.PROP_USER_NAME, attrs.owner().getName());
props.put(IgfsUtils.PROP_GROUP_NAME, attrs.group().getName());
props.put(IgfsUtils.PROP_PERMISSION, permissions(path));
return props;
}
项目:ephemeralfs
文件:FileAttributesSnapshot.java
public <V extends BasicFileAttributes> V cast(Class<V> type) {
if(type == BasicFileAttributes.class) {
return (V) new EphemeralFsBasicFileAttributes();
} else if(type == PosixFileAttributes.class) {
return (V) new EphemeralFsPosixFileAttributes();
} else if(type == DosFileAttributes.class) {
return (V) new EphemeralFsDosFileAttributes();
}
//there is no FileOwnerAttributes ?
else {
throw new UnsupportedOperationException("type:" + type + " is not supported");
}
}
项目:ephemeralfs
文件:EphemeralFsFileSystemProvider.java
private Class<? extends BasicFileAttributeView> viewClassFor(
Class<? extends BasicFileAttributes> attributeClass) {
if (attributeClass == BasicFileAttributes.class) {
return BasicFileAttributeView.class;
} else if (attributeClass == PosixFileAttributes.class) {
return PosixFileAttributeView.class;
} else if (attributeClass == DosFileAttributes.class) {
return DosFileAttributeView.class;
} else {
throw new IllegalArgumentException("unrecognized view class:"
+ attributeClass);
}
}
项目:ephemeralfs
文件:AttributesTest.java
@IgnoreIf(FsType.WINDOWS)
@Test
public void testReadPosix() throws Exception {
PosixFileAttributes attributes = Files.readAttributes(root, PosixFileAttributes.class);
assertNotNull(attributes);
assertNotNull(attributes.creationTime());
}