在Java中的C驱动器中搜索文件时出错
我想编写一个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
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有什么方法可以删除限制吗?或者我“这不可能吗?”史蒂文在下面看到了我的回答。