java - 如何将 Java 中的文件逐个字符读取到整数数组中?

标签 java

我有一个文件,其中包含所有数字,没有空格。 我正在尝试用 Java 逐个字符地将这个文件读取到整数数组中。 我尝试将文件作为字符串读取,然后将其逐个字符地步进到数组中,但我认为该文件超出了字符串大小限制。

最佳答案

正如@Scary Wombat 所建议的,字符串的最大大小和数组的最大大小都是Integer.MAX_VALUE。我们可以引用String max size , Array max sizeList max size 。请注意,具体的最大大小应为 Integer.MAX_VALUE - 1 或 -2 或 -5 与本主题无关。出于保险目的,我们可以使用 Integer.MAX_VALUE - 6。

我认为您的数字非常大,并且文件中的字符数可能超过 Integer.MAX_VALUE 的最大值,根据

I tried reading the file as an String then step through it char by char into an array but i think the file exceeded the String size limit.

为了处理最大值,我建议您创建另一个List来保存整数。它的核心概念类似于动态数组,但也有一些区别。对于动态数组,您正在申请另一个内存空间并将当前元素复制到该空间中。您可以引用下面的代码:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;

public class ReadFile {
    public static void main(String args[]){
        try{        
            File file = new File("number.txt");
            FileReader fileReader = new FileReader(file);
            BufferedReader reader = new BufferedReader(fileReader);
            ArrayList<ArrayList<Integer>> listContainer = new ArrayList<ArrayList<Integer>>();
            ArrayList<Integer> list = new ArrayList<Integer>();
            int item;
            while((item = reader.read()) != -1){
                /*
                 * I assume you want to get the integer value of the char but not its ascii value
                 */
                list.add(item - 48);
                /*
                 * Reach the maximum of ArrayList and we should create a new ArrayList instance to hold the integer
                 */
                if(list.size() == Integer.MAX_VALUE - 6){
                    listContainer.add(list);
                    list = new ArrayList<Integer>();
                }
            }
            reader.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

关于java - 如何将 Java 中的文件逐个字符读取到整数数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39239609/

相关文章:

java - 无法通过 idex 单击突出显示的元素

java - 使用 JAXB 生成 List 的 Setter

java - Jsoup登录穆迪

java - 如何在 Xalan 扩展函数实现中计算 XPath 表达式?

java - 使 JPA 在 JBoss 服务器上与 Spring Framework 一起工作

java - Spring Roo DataOnDemand getNewTransientObject 方法的自定义?

lambda 中的 Java 8 变量范围(Spark 特定)

java - 方法以离线方式打印数组元素,并且连字符乱序

java - 使用 Eclipse 获取 NoClassDefFoundError -> com/sun/jna/platform/win32/Psapi

java - Jersey 制作媒体类型冲突