集册 Java实例教程 chmod通过Java NIO

chmod通过Java NIO

欢马劈雪     最近更新时间:2020-01-02 10:19:05

553
通过Java NIO的chmod

/*

 * Copyright 2014 The Codehaus Foundation.

 *

 * Licensed under the Apache License, Version 2.0 (the "License");

 * you may not use this file except in compliance with the License.

 * You may obtain a copy of the License at

 *

 *      http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 *//*来自 N o  w  J a v a . c o m - 时  代  Java*/

//package com.nowjava;

import javax.annotation.Nonnull;


import java.io.File;

import java.io.IOException;

import java.nio.file.Files;


import java.nio.file.Path;


import java.nio.file.attribute.PosixFilePermission;

import java.util.HashSet;

import java.util.Set;


public class Main {

    public static void main(String[] argv) throws Exception {/* 来自 nowjava.com - 时  代  Java*/

        File file = new File("Main.java");

        int mode = 2;

        chmod(file, mode);

    }


    public static void chmod(@Nonnull File file, int mode)

            throws IOException {

        final Path path = file.toPath();

        if (!Files.isSymbolicLink(path)) {

            Files.setPosixFilePermissions(path, getPermissions(mode));

        }

    }


    @Nonnull

    public static Set<PosixFilePermission> getPermissions(int mode) {

        Set<PosixFilePermission> perms = new HashSet<PosixFilePermission>();

        //add owners permission

        if ((mode & 0400) > 0) {

            perms.add(PosixFilePermission.OWNER_READ);

        }

        if ((mode & 0200) > 0) {

            perms.add(PosixFilePermission.OWNER_WRITE);

        }

        if ((mode & 0100) > 0) {

            perms.add(PosixFilePermission.OWNER_EXECUTE);

        }

        //add group permissions

        if ((mode & 0040) > 0) {

            perms.add(PosixFilePermission.GROUP_READ);

        }

        if ((mode & 0020) > 0) {

            perms.add(PosixFilePermission.GROUP_WRITE);

        }

        if ((mode & 0010) > 0) {

         
展开阅读全文