Java 索引0无效,大小为0。无法添加到arrayList

Java 索引0无效,大小为0。无法添加到arrayList,java,android,arraylist,Java,Android,Arraylist,我有这个密码 ArrayList<File> internalPaths = new ArrayList<File>(); ArrayList<File> externalPaths = new ArrayList<File>(); for (int i = 0; i < pathCounter; i++) { Log.e("PK", Integer.toString(pathCounter)); if (i == 0)

我有这个密码

ArrayList<File> internalPaths = new ArrayList<File>();
ArrayList<File> externalPaths = new ArrayList<File>();

for (int i = 0; i < pathCounter; i++) {

    Log.e("PK", Integer.toString(pathCounter));
    if (i == 0) {
        // first path
        String path = pathString.substring(commaPositions[i],
            commaPositions[i + 1] + 1);

        if (path.length() > 7 && path.substring(0,8).contains("storage")) {
            externalPaths.add(new File(path));
        } else {
            internalPaths.add(new File(path));
        }
    }
}
除此之外:

索引0无效,大小为0

我想知道这是怎么可能的,因为我对添加到
外部路径
没有问题,但是对于
内部路径
,存在此错误

if (path.length() > 7
                        && path.substring(0,8).contains("storage")) {
子字符串索引0,8可能导致短于8个字符的字符串出现问题。此外,您可能需要处理空字符串大小写

这完全是失败的一部分


InternalPaths是一个已初始化的ArrayList(不是NullPointerException),它的
add
方法应该在数组末尾追加一个项,而不是
将它放在特定的位置(索引位置)。因此,问题应该在
文件的构造函数中。调试并检查路径的值。我打赌这是一个空字符串。找出如何将其初始化为这样的值。

如何声明通信???您确定您的代码是最新的吗。您能识别出故障的精确线路而不是阻塞线路吗?对不起,已编辑。现在更清楚了。我唯一想到的是文件构造函数不喜欢你的路径。。。能否检查path变量在此处实际包含的内容?是否使用断点进行调试?调用
substring()
不会对长度为7的
字符串造成任何问题,因为第二个参数是独占的。
if (path.length() > 7
                        && path.substring(0,8).contains("storage")) {
else {
    internalPaths.add(new File(path));
}