java - 如何修复读取文件时索引越界异常(元数据提取器)

标签 java arrays indexoutofboundsexception metadata-extractor

我制作了一个小程序,该程序应该从特定目录的文件中读取元数据。元数据在标签中打印出来。我在下面复制了我的代码。 'System.out.println(Arrays.toString(sourceFiles));'返回文件夹中的所有 10 个文件。但是'System.out.println(x);'仅返回 3 个文件,然后给出索引 3 的出站错误。如何修复我的代码,使其能够读取所有 10 个文件?有人可以帮我解决这个问题吗? (如果我取消注释代码中的标签部分,它将给出相同 3 个文件的元数据)。哦,我是java新手,请给我尽可能多的信息。

我正在使用元数据提取器。

谢谢!

package scheme;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;

import com.drew.imaging.ImageProcessingException;
import com.drew.metadata.Metadata;
import com.drew.metadata.Tag;

public class Test{

public static void main(String[] args) {
    // TODO Auto-generated method stub
    File image = new File("C:/Users/[username]/Pictures/");
    File[] sourceFiles = image.listFiles(); 
    System.out.println(Arrays.toString(sourceFiles));   
    Metadata metadata = null;
    try {
    for (File x: sourceFiles) {

         metadata = ImageMetadataReader.readMetadata(x);
         System.out.println(x);
        //for (Directory directory : metadata.getDirectories()) {
            //for (Tag tag : directory.getTags()) {
              // System.out.println(tag);
            //}
        //}
        }
    }
         catch (ImageProcessingException e) {
        e.printStackTrace();
        } catch (IOException e) {
        e.printStackTrace();
        }
    }   
}

最佳答案

没关系,我明白了。发生错误的原因是程序在第四个文件(无法读取 .ini 文件)处崩溃。

关于java - 如何修复读取文件时索引越界异常(元数据提取器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57883942/

相关文章:

java - 用模数计算大幂

java - 在Eclipse调试器中,怎样修改 "hot code replaced"可以进入运行的JVM?

arrays - Lua 根据数组元素检查值

c - 二进制 * 的无效操作数(有 'double *' 和 'double *' )

java - ArrayList#remove() 方法之间的区别

java - java数组索引越界

java - 速度模板 - 线程中的异常 "main"org.apache.velocity.exception.ResourceNotFoundException : Unable to find resource

Java8 maven raise 错误引用过滤器不明确

java - 比较数组

java - 我的 java 程序给我一个 IndexOutOfBoundsException