首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将只读属性应用于C:目录中的所有.docx和.pptx文件?使用java

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

Stack Overflow用户
提问于 2018-07-26 22:18:57
回答 2查看 107关注 0票数 -1

请注意,我正在尝试将setReadOnly()函数应用于C:驱动器中具有.docx和.pptx文件扩展名的所有文档。与只读显示一样,应用于文件扩展名在C: directory中的任何文档。请谁来帮助我如何实现这一点。这就是我所能想到的,但我认为这不是正确的方法,也不是正确的代码

代码语言:javascript
复制
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");
     }

 }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-26 22:31:35

试试这个:

代码语言:javascript
复制
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);
}

}
票数 0
EN

Stack Overflow用户

发布于 2018-07-26 22:28:07

您可以使用FileNameFilter。这应该是可行的

代码语言:javascript
复制
    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);
    }

如果你使用的是低于8的Java,用传统的for循环替换Stream.of

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51541080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档