【问题标题】:ArrayStoreException for no reason?ArrayStoreException 无缘无故?
【发布时间】:2023-04-03 08:37:01
【问题描述】:

我正在尝试制作课程来执行以下操作: 获取一个文件夹,获取它包含的文件夹,以及对于主文件夹中的每个文件夹 - 获取其中的文件并将它们分成两组 - 一组是 mp4、mkv、vlc 和 avi 类型,另一组是 srt 类型.

我当前的代码是:

Show.class:http://pastebin.com/vZ7ipFJc

Season.class:http://pastebin.com/tqUJ7S9v

主类:http://pastebin.com/LaEvuARW

堆栈跟踪将我带到许多不同的地方:

Exception in thread "main" java.lang.ArrayStoreException
at java.lang.System.arraycopy(Native Method)
at java.util.ArrayList.toArray(Unknown Source)
at Show.<init>(Show.java:47)
at Main.getShows(Main.java:24)
at Main.setupShowsBox(Main.java:70)
at Main.<init>(Main.java:96)
at Main.main(Main.java:54)

(pastebin中的行与代码中的行相同)问题似乎是我将arraylist转换为数组的地方,我不知道问题是什么。有什么问题,我该如何解决?

【问题讨论】:

  • 在此处发布您的相关代码。没有人愿意关注链接。
  • 在这里发布您的代码,如果这些链接断开,这个问题就会变成垃圾。

标签: java file exception


【解决方案1】:

所以这是导致错误的行:

List<Season> seasons;
File[] seasonFile;

this.seasonsFile=seasons.toArray(new File[seasons.size()]);

您正在尝试将Seasons 的列表转换为Files 的数组。您可以将Files 列表转换为Files 数组,也可以使用toArray()Seasons 列表转换为Seasons 数组。

如果您有办法将 Season 对象转换为 File 对象,则可以将其放入您的 Season 对象的 toFile() 方法中。然后获取你的文件数组:

int idx = 0;
for (season : seasons) {
    seasonsFile[idx] = season.toFile();
    idx++;
}

【讨论】:

    【解决方案2】:

    你在 Show.java 中有第 47 行:

    this.seasonsFile=seasons.toArray(new File[seasons.size()])
    

    seasonsArrayListSeasonArrayList#toArray 无法将Seasons 的负载压缩到Files 的数组中。也许你想要this.seasonsFile = seasons.getShows;

    此外,您不应该使用遵循方法名称约定的包私有变量名称。这会让每个人都感到困惑。

    【讨论】:

    • 非常感谢!我看了很多次代码并没有注意到,我是打算这样做的。seasonsFile=seasonsFile.toArray(new File[seasonsFile.size()]);
    • 你确定吗?这似乎也不太可能。
    • 是的,我敢肯定,这是可行的,因为 seasonsFile 是一个数组列表,而 this.seasosnFile 是一个文件数组。无论如何,谢谢!
    猜你喜欢
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 2021-02-09
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多