2

フォルダに保存されているすべてのファイルの情報を一覧表示するプログラムを実行しています。

ファイルのプロパティを取得したい(私にとって最も重要なのはファイルサイズですが、変更日などの他のプロパティも取得したいです)。

私の問題は、実際に別のプログラムで使用されているファイルにアクセスすると、ファイルを取得できないことBasicFileAtrributtesです。File、、を使用しようとしましたがURLRandomFileAccesこれらすべての要求を使用してファイルを開き、次のような例外をスローします。

java.io.FileNotFoundException: C:\pagefile.sys (Access is denied)

このプロパティを取得するためのJavaのオプションはありますか?アプリケーションのサイズを小さく保つために、余分なライブラリを使用しないことを好みます。

アプリはJavaJRE7に基づいています。

私は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;        
}
4

2 に答える 2

2

これは私にとっては問題なく機能します:

File temp = new File("c:\\pagefile.sys");
System.err.println(temp.length());
System.err.println(temp.lastModified());
于 2012-04-05T08:57:17.423 に答える
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
于 2012-04-05T10:13:58.260 に答える