如何将只读属性应用于C:目录中的所有.docx和.pptx文件?使用java

如何将只读属性应用于C:目录中的所有.docx和.pptx文件?使用java,java,Java,请注意,我正在尝试将setReadOnly()函数应用于C:驱动器中具有.docx和.pptx文件扩展名的所有文档。正如在readonly中显示的那样,应用于在C:目录中具有文件扩展名的任何文档。 请有人告诉我如何实施。这是我能够提供的,但我认为这不是正确的方法,也不是正确的代码 import java.io.File; import java.io.IOException; public class FileReadAttribute { public static void main(St

请注意,我正在尝试将setReadOnly()函数应用于C:驱动器中具有.docx和.pptx文件扩展名的所有文档。正如在readonly中显示的那样,应用于在C:目录中具有文件扩展名的任何文档。 请有人告诉我如何实施。这是我能够提供的,但我认为这不是正确的方法,也不是正确的代码

import java.io.File;
import java.io.IOException;

public class FileReadAttribute {
public static void main(String[] args) throws IOException {
     File file = new File("C:*.docx");
     file.setReadOnly();

     if(file.canWrite()) {
         System.out.println("This file is writable");
     } else {
         System.out.println("This file is read only");
     }

 }
}

您可以使用
FileNameFilter
。这应该行得通

    File dir = new File("/users/blah/dirname");
    File[] files = dir.listFiles(new FilenameFilter() {
        public boolean accept(File dir, String name) {
            return name.toLowerCase().endsWith(".docx");
        }
    });

    if (files != null) {
        Stream.of(files).forEach(File::setReadOnly);
    }
如果您使用的Java小于8。用传统的for循环替换
Stream.of

尝试以下方法:

import java.io.File;
import java.io.IOException;

public class FileReadAttribute {
public static void main(String[] args) throws IOException {
     File c_drive = new File("C:\\");
     setPermission(c_drive);

 }

private static void setPermission(File parent) {
        File[] files = parent.listFiles();//get all files of this directory
        for (File file : files) {
            if (file.isDirectory()) {
                setPermission(file); //set permission of the files in this directory
            } else {
                String fileExtension = getFileExtension(file);
                if (fileExtension.equals("docx") || fileExtension.equals("pptx")) {
                    file.setReadOnly();
                }
            }
        }

    }

private static String getFileExtension(File file) {
    String name = file.getName();
    return name.substring(name.lastIndexOf(".") + 1);
}

}

你所说的“代码实际上没有指向目录”是什么意思?@Jakob Herk我正试图以C驱动器为目标。从您的代码中,我看不到在调用该方法时可以传递任何文件对象(如new file(“C:/”)时指示的驱动器。这是一个递归,因此该方法一直在调用自己,直到某个条件返回false为止。因此,您只需调用:setPermission(新文件(“C:”);@Jakob Herk我是java新手,不太懂。你能在前面的代码中帮我修改一下吗?我改了。看一看