【问题标题】:how to write 2D char array into a file如何将二维字符数组写入文件
【发布时间】:2015-10-08 16:54:04
【问题描述】:

如何将二维字符数组写入文件。我到处寻找解决方案,但没有找到答案。

void printDATA(){
String[][] stringArray = Arrays.copyOf(data, data.length, String[][].class);
char[][] charArray = new char[stringArray.length][stringArray[0].length];
            for(int i = 0; i < stringArray.length; i++)
            {
                for(int j = 0; j < stringArray[0].length; j++)
                {
                    charArray[i][j] = stringArray[i][j].charAt(0);
                }
            }
        File file = new File("result.doc");
        try {
            //FileWriter fout = new FileWriter(file);//Gives error
            PrintWriter fout = new PrintWriter(file);//This also gives error
            fout.write(charArray);
            fout.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

【问题讨论】:

    标签: java arrays file


    【解决方案1】:

    Writer API 不支持写入数组数组。只有int(应该是char)、Stringchar[]。循环遍历要写入的数组。

    for (int i = 0; i < charArray.length; i++) {
        fout.write(charArray[i]);
    }
    

    您可能还想添加换行符。

    【讨论】:

    • 其实我真的很想打印二维字符数组或二维字符串数组。有没有替代方法..??
    • 不使用通用 API。打印二维数组有助于解释您的意思。取这个数组:String[][] test = { { "foo", "bar", "baz" }, { "1", "12", "123" }, { "the", "quick", "brown", "fox" } };。您希望程序打印什么?
    【解决方案2】:

    伪代码:

    for(int i =0;i< 1st dimension; i++)
       { for(int j =0;j< 2nd dimension; j++)
            {
              write (array[i][j])
              write (some symbol)
            }
      write (some other symbol)
       }
    

    然后,当您要从文件中读取时,您需要记住分隔符号。

    然后您需要将整个文件作为字符串读取并使用第一个符号然后第二个符号将其拆分。

    例如,让我们采用以下二维数组:

    苹果橙菠萝。

    香蕉番茄葡萄。

    您可以将其作为一维字符串写入文件,如下所示: 苹果、橙子、菠萝;香蕉、番茄、葡萄;

    然后,当您将文件作为字符串读取时,您将拆分为“;”并得到: 苹果、橙、菠萝 香蕉、番茄、葡萄

    然后在 "," 处拆分每个并重新构建您的二维数组。

    【讨论】:

    • 如果你不想使用任何 API 或复杂的代码
    • @M 我认为使用 FileWriter 处理文件只支持一维字符数组。任何其他 OutputStream 方法或替代方法..?
    猜你喜欢
    • 1970-01-01
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 2018-03-08
    • 1970-01-01
    • 2016-02-24
    相关资源
    最近更新 更多