Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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 读取文件夹中的整个文件_Java_Java Io - Fatal编程技术网

Java 读取文件夹中的整个文件

Java 读取文件夹中的整个文件,java,java-io,Java,Java Io,Java中有没有一种方法可以在Java中指定一个目录,然后它逐个读取整个文件 否则,有没有办法用java读取正则表达式文件?因此,如果文件夹中的所有文件都以gh001_12312 gh002_12312、gh003_12911、gh004_2222、gh005_xxxxx等开头,则可以使用以下方法的组合。第一种方法让您可以选择递归地遍历目录中与特定扩展名匹配的所有文件(还有另一种重载方法,允许您提供自己的过滤器)。第二个方法将文件的全部内容作为字符串对象读取 Iterator<File&g

Java中有没有一种方法可以在Java中指定一个目录,然后它逐个读取整个文件


否则,有没有办法用java读取正则表达式文件?因此,如果文件夹中的所有文件都以gh001_12312 gh002_12312、gh003_12911、gh004_2222、gh005_xxxxx等开头,则可以使用以下方法的组合。第一种方法让您可以选择递归地遍历目录中与特定扩展名匹配的所有文件(还有另一种重载方法,允许您提供自己的过滤器)。第二个方法将文件的全部内容作为字符串对象读取

Iterator<File> iterateFiles(File directory,
                                          String[] extensions,
                                          boolean recursive)
String readFileToString(File file)
                               throws IOException
迭代器迭代器文件(文件目录,
字符串[]扩展名,
布尔(递归)
字符串readFileToString(文件)
抛出IOException

标准Java库提供了一种通过获取目录中的
文件
元素数组的方法。 基本上:

File theDirectory = new File("/home/example");
File[] children = theDirectory.listFiles();
此外,还有一个重载方法,允许指定一个过滤器,该过滤器可用于修剪列表中返回的元素

File theDirectory = new File("/home/example");
File[] children = theDirectory.listFiles(new FileFilter(){
    public boolean accept(File file) {
        if (file.isFile()) {
           //Check other conditions
           return true;
        }
        return false;
    }
});

如果您还想基于文件名进行一些过滤,请查看和。如果您知道只有文件或遵循特定命名约定的文件,还有一个
文件.listFiles(FilenameFilter)
选项,它只提供一个表示文件名的字符串。

我在这里重复使用@Tim Bender的代码:

首先,获取所有所需文件的列表,如@Tim Bender所示(为了完整起见,这里再次显示)。而且不需要第三方库

File theDirectory = new File("/home/example");
File[] children = theDirectory.listFiles(new FileFilter(){
    public boolean accept(File file) {
        if (file.isFile()) {
           //Check other conditions
           return true;
        }
        return false;
    }
});
现在迭代这个数组,使用
java.nio
API一次性读取文件(不使用
br.readLine()


希望得到这些帮助

如果我不想使用commons IOU,你也可以借助File(isDirectory()、listFiles()、FileNameFilter和BufferedReader)的帮助来做到这一点。这里很少有@Andrew Thompson这样的人,他们的行为是不必要的。有时有些功能是你以前不知道的,但有些功能我同意。就我个人而言,我不知道@Pangea提到的API,我认为它们看起来很有趣。有没有一种方法可以将BufferedReader作为一个完整的字符串来读取,而不是执行input.readLine(),其中必须逐行执行?@EquinoX,我不知道。
public StringBuilder readReplaceFile(File f) throws Exception
{
    FileInputStream fis = new FileInputStream(f);
    FileChannel fc = fis.getChannel();

    int sz = (int)fc.size();
    MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, sz);

    CharBuffer cb = decoder.decode(bb);

    StringBuilder outBuffer = new StringBuilder(cb);
    fc.close();
    return outBuffer;
}