Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中的C驱动器中搜索文件时出错_Java_Hibernate_Search - Fatal编程技术网

在Java中的C驱动器中搜索文件时出错

在Java中的C驱动器中搜索文件时出错,java,hibernate,search,Java,Hibernate,Search,我想编写一个Java程序,在我的C:\驱动器中搜索特定文件 这是我的密码: public class Hibernate { public static void main(String[] args) throws IOException { String directory = "C:\\"; Path start = FileSystems.getDefault().getPath(directory); Files.w

我想编写一个Java程序,在我的C:\驱动器中搜索特定文件

这是我的密码:

public class Hibernate 
{
    public static void main(String[] args) throws IOException 
    {
        String directory = "C:\\"; 
        Path start = FileSystems.getDefault().getPath(directory);
        Files.walkFileTree(start, new SimpleFileVisitor<Path>(){ 
            @Override
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException 
            {
                if (file.toString().contains("hiberfil.sys")) 
                {
                    System.out.println(file);
                }
                else
                {
                    System.out.println("No such file!");
                }
                return FileVisitResult.CONTINUE;
            }
        });
    }
}
公共类休眠
{
公共静态void main(字符串[]args)引发IOException
{
String directory=“C:\\”;
Path start=FileSystems.getDefault().getPath(目录);
walkFileTree(开始,新的SimpleFileVisitor(){
@凌驾
公共文件VisitResult visitFile(路径文件,基本文件属性属性属性)引发IOException
{
if(file.toString()包含(“hiberfil.sys”))
{
System.out.println(文件);
}
其他的
{
System.out.println(“没有这样的文件!”);
}
返回FileVisitResult.CONTINUE;
}
});
}
}
现在的问题是,当我运行它时,它会给我以下错误:

No such file!
Exception in thread "main" java.nio.file.AccessDeniedException: C:\$Recycle.Bin\S-1-5-20
    at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
    at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
    at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
    at sun.nio.fs.WindowsDirectoryStream.<init>(Unknown Source)
    at sun.nio.fs.WindowsFileSystemProvider.newDirectoryStream(Unknown Source)
    at java.nio.file.Files.newDirectoryStream(Unknown Source)
    at java.nio.file.FileTreeWalker.walk(Unknown Source)
    at java.nio.file.FileTreeWalker.walk(Unknown Source)
    at java.nio.file.FileTreeWalker.walk(Unknown Source)
    at java.nio.file.FileTreeWalker.walk(Unknown Source)
    at java.nio.file.Files.walkFileTree(Unknown Source)
    at java.nio.file.Files.walkFileTree(Unknown Source)
    at Hibernate.main(Hibernate.java:43)
没有这样的文件!
线程“main”java.nio.file.AccessDeniedException中的异常:C:\$Recycle.Bin\S-1-5-20
位于sun.nio.fs.WindowsException.translateToIOException(未知源)
位于sun.nio.fs.WindowsException.rethrowAsIOException(未知源)
位于sun.nio.fs.WindowsException.rethrowAsIOException(未知源)
位于sun.nio.fs.WindowsDirectoryStream。(未知源)
位于sun.nio.fs.WindowsFileSystemProvider.newDirectoryStream(未知源)
位于java.nio.file.Files.newDirectoryStream(未知源)
位于java.nio.file.FileTreeWalker.walk(未知源)
位于java.nio.file.FileTreeWalker.walk(未知源)
位于java.nio.file.FileTreeWalker.walk(未知源)
位于java.nio.file.FileTreeWalker.walk(未知源)
位于java.nio.file.Files.walkFileTree(未知源)
位于java.nio.file.Files.walkFileTree(未知源)
位于Hibernate.main(Hibernate.java:43)
但是,当我更改
String directory=“C:\\”
String directory=“F:\\”(我的thumbdrive),它返回给我很多
没有这样的文件但没有如上所示的错误

但是根据错误:
Hibernate.java:43
应该是:
Files.walkFileTree(start,newsimplefilevisitor(){


我应该如何解决这个问题?非常感谢您的帮助!!!

请重写用于跳过不可访问文件的
visitFileFailed
方法

public class Hibernate {
    public static void main(String[] args) throws Exception {
        String directory = "c:\\";

        Path start = FileSystems.getDefault().getPath(directory);
        Files.walkFileTree(start, new SimpleFileVisitor<Path>() {
            @Override
            public FileVisitResult visitFile(Path file,
                    BasicFileAttributes attrs) throws IOException {

                if (file.toString().contains("hiberfil.sys")) 
                    System.out.println(file);

                return FileVisitResult.CONTINUE;
            }

            @Override
            public FileVisitResult visitFileFailed(Path file, IOException exp) {
                // System.out.println(file);
                return FileVisitResult.CONTINUE;
            }
        });
    }
}
公共类休眠{
公共静态void main(字符串[]args)引发异常{
String directory=“c:\\”;
Path start=FileSystems.getDefault().getPath(目录);
walkFileTree(开始,新的SimpleFileVisitor(){
@凌驾
公共文件VisitResult visitFile(路径文件,
BasicFileAttributes(属性属性)引发IOException{
if(file.toString()包含(“hiberfil.sys”))
System.out.println(文件);
返回FileVisitResult.CONTINUE;
}
@凌驾
公共文件VisitResult visitFileFailed(路径文件,IOException exp){
//System.out.println(文件);
返回FileVisitResult.CONTINUE;
}
});
}
}

我认为您对c驱动器有访问限制。@laksys如何?我实际上是java新手。@Steven它在尝试访问$Recycle.Bin时抛出了异常,这是一个隐藏的Windows系统文件夹。从我所知道的情况来看,由于受到保护,它无法正常访问:@laksys有什么方法可以删除限制吗?或者我“这不可能吗?”史蒂文在下面看到了我的回答。