< prev index next >
src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipPath.java
Print this page
rev 53081 : 8213031: (zipfs) Add support for POSIX file permissions
Reviewed-by: simonis
*** 32,44 ****
import java.net.URI;
import java.nio.channels.FileChannel;
import java.nio.channels.SeekableByteChannel;
import java.nio.file.*;
import java.nio.file.DirectoryStream.Filter;
- import java.nio.file.attribute.BasicFileAttributeView;
import java.nio.file.attribute.FileAttribute;
import java.nio.file.attribute.FileTime;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Objects;
--- 32,44 ----
import java.net.URI;
import java.nio.channels.FileChannel;
import java.nio.channels.SeekableByteChannel;
import java.nio.file.*;
import java.nio.file.DirectoryStream.Filter;
import java.nio.file.attribute.FileAttribute;
import java.nio.file.attribute.FileTime;
+ import java.nio.file.attribute.PosixFilePermission;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Objects;
*** 766,778 ****
throws IOException
{
zfs.setTimes(getResolvedPath(), mtime, atime, ctime);
}
! Map<String, Object> readAttributes(String attributes, LinkOption... options)
throws IOException
{
String view = null;
String attrs = null;
int colonPos = attributes.indexOf(':');
if (colonPos == -1) {
--- 766,783 ----
throws IOException
{
zfs.setTimes(getResolvedPath(), mtime, atime, ctime);
}
! void setPermissions(Set<PosixFilePermission> perms)
throws IOException
+ {
+ zfs.setPermissions(getResolvedPath(), perms);
+ }
+ Map<String, Object> readAttributes(String attributes, LinkOption... options)
+ throws IOException
{
String view = null;
String attrs = null;
int colonPos = attributes.indexOf(':');
if (colonPos == -1) {
*** 933,948 ****
} finally {
is.close();
}
}
if (copyAttrs) {
! BasicFileAttributeView view =
! ZipFileAttributeView.get(target, BasicFileAttributeView.class);
try {
view.setTimes(zfas.lastModifiedTime(),
zfas.lastAccessTime(),
zfas.creationTime());
} catch (IOException x) {
// rollback?
try {
target.delete();
} catch (IOException ignore) { }
--- 938,959 ----
} finally {
is.close();
}
}
if (copyAttrs) {
! ZipFileAttributeView view =
! ZipFileAttributeView.get(target, ZipFileAttributeView.class);
try {
view.setTimes(zfas.lastModifiedTime(),
zfas.lastAccessTime(),
zfas.creationTime());
+ // copy permissions if available
+ try {
+ view.setPermissions(zfas.permissions());
+ } catch (UnsupportedOperationException uoe) {
+ // the current entry may have no permissions.
+ }
} catch (IOException x) {
// rollback?
try {
target.delete();
} catch (IOException ignore) { }
< prev index next >