请注意,我正在尝试将setReadOnly()函数应用于C:驱动器中具有.docx和.pptx文件扩展名的所有文档。与只读显示一样,应用于文件扩展名在C: directory中的任何文档。请谁来帮助我如何实现这一点。这就是我所能想到的,但我认为这不是正确的方法,也不是正确的代码
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");
}
}
}
发布于 2018-07-26 22:31:35
试试这个:
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);
}
}
发布于 2018-07-26 22:28:07
您可以使用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);
}
如果你使用的是低于8的Java,用传统的for循环替换Stream.of
。
https://stackoverflow.com/questions/51541080
复制相似问题