< 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,13 +32,13 @@
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.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,13 +766,18 @@
throws IOException
{
zfs.setTimes(getResolvedPath(), mtime, atime, ctime);
}
- Map<String, Object> readAttributes(String attributes, LinkOption... options)
+ 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,16 +938,22 @@
} finally {
is.close();
}
}
if (copyAttrs) {
- BasicFileAttributeView view =
- ZipFileAttributeView.get(target, BasicFileAttributeView.class);
+ 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 >