当前位置: 首页 > 知识库问答 >
问题:

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

夹谷英杰
2023-03-14

我做了一个小程序,应该从特定目录的文件中读取元数据。元数据打印在标签中。我已经复制了下面的代码。“System.out.println(Arrays.toString(Source ceFiles));”返回文件夹中的所有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();
        }
    }   
}

共有1个答案

闾丘英悟
2023-03-14

没关系,我知道了。出现错误是因为程序在第4个文件a处崩溃。无法读取的ini文件。

 类似资料:
  • 在Java中构建汇编程序:我试图将用户的输入读入名为的。如果用户输入的指令与-array中的一个匹配,那么相应的操作码将被计算出来并输出到一个文本文件中。 但是,在输入指令并尝试添加另一条指令后,我得到了一个索引越界异常。 如果你们能帮忙,我会很感激的。

  • 我一直在四处寻找是否有任何东西可以帮助我,但我不太了解人们的回答,任何我所了解的似乎都不能解决问题!所以基本上正如标题所说,我得到了一个数组索引越界异常,但我不知道为什么。非常感谢任何帮助。 代码:

  • 固定的: 我删除了while循环并添加了 我正在尝试向一个单词中随机添加一个额外的字母副本(介于0-8之间)。实例does可能会变成dooee或doess。 我的函数有时会工作,但总是会因越界索引错误而崩溃。 我假设我需要在某个时刻检查ArrayList中的空值。我试着用和if来包装我的while语句,以检查它,但没有任何改进。有什么建议吗?

  • 我犯的错误 我的密码 我试图将数组的最后5个元素存储在temp 2中。那我就换了。有更简单的方法吗?将数组的前五个元素与后五个元素切换?你会如何用for循环切换它们?

  • 这是我的代码: 该程序的目的是要求用户输入一个字符串,然后统计字符串中每个字符的使用次数。 当我去编译程序时,它工作正常。当我运行程序时,我可以在弹出框中输入字符串,但是在我提交字符串并按确定后,我得到一个错误,说 我不完全确定问题是什么或如何解决。

  • 所以基本上我应该做的是,我应该得到一个字符串的数组列表,用两个字符串填充它,然后比较它们。例如,如果一个字符串是“1,2,3,4”,第二个字符串是“7,6,2,8,1”,那么它应该打印出“1,2”,因为它打印出的数字相似。但我遇到了和arrayindexoutofbounds异常,我不知道如何修复它。此外,如果你有任何可能缩短此代码的提示,也请告诉我。我有一个习惯,让我的代码超长。