理论上说一个 int 有多大数组就可以有多大应该就是 Integer.MAX_VALUE, 但实际上要看你的内存有多大, 使用太大的数组肯定是不合适的, 有两种解决的办法第一种: 在运行之前要加上 -Xmx256M, 其中的 256M 就表示最大的可用的内存为 256M, 不过这种方法只是治标不治本; 第二种:你不要用那么大的数组, 先声明一个小一点的数组如 new byte[256], 然后在每次需要的时候再从文件中读取相应的数据缓存起来这种方法可以治本你也可以用 BufferedInputStream, 这样你自己边缓存的算法都不用自己写了