我正在运行一个程序来列出存储在文件夹中的所有文件的信息。
我想获取文件的属性(对我来说最重要的是文件大小,但我还想获得其他属性,例如修改日期等)。
我的问题是,当我到达另一个程序实际使用的文件时,我无法获取文件的BasicFileAtrributtes
。我尝试使用File
,URL
,RandomFileAcces
,但所有这些都需要打开一个文件,并抛出Exception,如:
java.io.FileNotFoundException: C:\pagefile.sys (Access is denied)
java中是否有任何选项可以获取此属性?我不想使用任何额外的库来保持应用程序的小尺寸。
App基于java JRE7。
我正在使用java.nio.file.SimpleFileVisitor
访问所有文件。
这是我的代码的片段,我得到了错误:
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc){
FileInfo temp=new FileInfo(new FileInfo().repairName(file.toString()));
temp.isLeaf=true;
temp.fName=temp.fName.replace(strIn, "");
File fis=null;
try {
fis=new File(file.toAbsolutePath().toString());
if(fis.exists())
System.out.println("exists");
if(fis.isFile())
System.out.println("isFile");
System.out.println(file.toAbsolutePath().toString());
temp.fSize=new BigInteger(new Long(fis.length()).toString());
} catch(Exception e){
e.printStackTrace();
}
node.add(temp, true);
FileListCreator.jProgressBar.setValue(++count);
return CONTINUE;
}
答案 0 :(得分:2)
这对我来说很好用:
File temp = new File("c:\\pagefile.sys");
System.err.println(temp.length());
System.err.println(temp.lastModified());
答案 1 :(得分:0)
如果方法java.io.File.exists()返回false,并且文件系统中存在文件C:\pagefile.sys
,那么您指定了不正确的文件路径。
以下代码适用于我的机器:
package q10025482;
import java.io.File;
public class TestFile {
public static void main(String[] args) {
String fileName = "C:/System Volume Information";//"C:/pagefile.sys"
File file = new File(fileName);
System.out.println("\nFile " + file.getAbsolutePath() + " info:");
System.out.println("Exists: " + file.exists());
System.out.println("Is file: " + file.isFile());
System.out.println("Is dir: " + file.isDirectory());
System.out.println("Length: " + file.length());
System.out.println();
}
}
以下是结果输出:
File C:\System Volume Information info:
Exists: true
Is file: false
Is dir: true
Length: 24576