Java 文件输入/输出,存储数据

Java 文件输入/输出,存储数据,java,Java,好吧,让我们再试一次,很抱歉我不知道该怎么称呼这个可怜的标题。我以前没有做过太多的文件I/O,我个人认为Java在这方面非常糟糕,但我还是不得不这么做 一点背景信息,这是我的康威的生活游戏项目,我的所有其他代码工作良好,我只需要现在做I/O 我在读一个文本文件,看起来像 所以它的作用是,前两个数字是数组需要的大小,它们后面的字符串是无关的。在这之后是这个例子中的单元排列的数组,这是滑翔机的数组。现在我的问题是,我不知道如何将第一行存储在字符串中,其余的存储在数组中。下面是我所做的,准备好迎接一个

好吧,让我们再试一次,很抱歉我不知道该怎么称呼这个可怜的标题。我以前没有做过太多的文件I/O,我个人认为Java在这方面非常糟糕,但我还是不得不这么做

一点背景信息,这是我的康威的生活游戏项目,我的所有其他代码工作良好,我只需要现在做I/O

我在读一个文本文件,看起来像

所以它的作用是,前两个数字是数组需要的大小,它们后面的字符串是无关的。在这之后是这个例子中的单元排列的数组,这是滑翔机的数组。现在我的问题是,我不知道如何将第一行存储在字符串中,其余的存储在数组中。下面是我所做的,准备好迎接一个巨大的挑战^∞.

    public char[][] fileIO(){
    ArrayList<String> list = new ArrayList<String>();
    char[][] newArray;
    String[] tokens;
    BufferedReader reader;
    String inputLine;

    try{
        reader = new BufferedReader(new FileReader("untitled.txt"));
        while((inputLine = reader.readLine()) != null){
            list.add(inputLine);
        }
        reader.close();
    }catch (IOException e){
        System.out.println(e);
    }

    tokens = list.get(0).trim().split("\\s+");
    newArray = new char[Integer.parseInt(tokens[0])][Integer.parseInt(tokens[1])];

    for(int row = 0; row < newArray.length; row++){
        for(int col = 0; col < newArray[row].length; col++){
            for(int line = 1; line < list.size(); line++){
                for(int Char = 0; Char < list.get(line).length(); Char++){
                    newArray[row][col] = list.get(line).charAt(Char);
                }
            }
        }
    }
    return newArray;
}
public char[]fileIO(){
ArrayList=新建ArrayList();
char[][]新数组;
字符串[]标记;
缓冲读取器;
字符串输入线;
试一试{
reader=new BufferedReader(new FileReader(“untitled.txt”);
而((inputLine=reader.readLine())!=null){
列表。添加(输入行);
}
reader.close();
}捕获(IOE异常){
系统输出打印ln(e);
}
tokens=list.get(0.trim().split(\\s+);
newArray=newchar[Integer.parseInt(令牌[0])][Integer.parseInt(令牌[1]);
for(int row=0;row
我知道这里缺少评论,所以我将尝试解释我现在试图做的事情

  • 我从文件中读取并将其全部存储在ArrayList中

  • 获取第一个like(10 20 Glider)的令牌,并创建一个实例化的数组,值为10和20

  • 然后继续循环遍历数组的行和列,然后遍历输入数组的每一行,然后循环遍历该行的每个字符,将其添加到数组中相应的位置

然而,这似乎不起作用,我相信有一种更简单、更有效的方法可以做到这一点。所以我再次问,有谁能告诉我一种更简单的I/O方法吗?我不需要代码,只需要解释一下如何操作。

在此:

for(int row = 0; row < newArray.length; row++){
        for(int col = 0; col < newArray[row].length; col++){
            for(int line = 1; line < list.size(); line++){
                for(int Char = 0; Char < list.get(line).length(); Char++){
                    newArray[row][col] = list.get(line).charAt(Char);
                }
            }
        }
    }
for(int row=0;row
您有两个外部循环正在浏览
newArray
网格,还有两个内部循环正在浏览文件的行。这样做,基本上就是将文件每行的每个字符逐个写入网格的每个单元格。最后,文件最后一行的最后一个字符将出现在
newArray
的所有单元格中。这可能不是你想做的


编辑:如果我理解正确,文件开头的数字是后面数据的行数和列数。然后您只需使用两个外部循环,并使用
分别访问
列表中的行和行中的字符。

它是如何工作的?发生了什么?这看起来像是你的复制品。如果是这样,请删除这一个,并编辑旧的一个添加任何改进。“似乎不工作”不是很有帮助;更多的信息将是有用的。对于如何加快速度的一般观察,您可以读取数组大小,创建数组,然后读取文件的每一行,并使用将文件的每一行分配给数组。哦,对不起,我忘了添加,当我打印数组时,它只会为每个位置打印空字符。不,这不是我想要做的,我想要的是将一个字符放入数组的适当位置。我已经编辑了我的答案,并建议您如何编写它。