如何将只读属性应用于C:目录中的所有.docx和.pptx文件?使用java
请注意,我正在尝试将setReadOnly()函数应用于C:驱动器中具有.docx和.pptx文件扩展名的所有文档。正如在readonly中显示的那样,应用于在C:目录中具有文件扩展名的任何文档。 请有人告诉我如何实施。这是我能够提供的,但我认为这不是正确的方法,也不是正确的代码如何将只读属性应用于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
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新手,不太懂。你能在前面的代码中帮我修改一下吗?我改了。看一看