将文件读取为2d char数组

时间:2017-02-08 00:23:39

标签: java arrays 2d java.util.scanner

如何仅使用charjava.io.File和文件未找到异常,从仅包含Scanner的文本文件中读取数据到二维数组中?

这是我试图制作的方法,它将在文件中读取到2D数组。

public AsciiArt(String filename, int nrRow, int nrCol){
    this.nrRow = nrRow;
    this.nrCol = nrCol;

    image = new char [nrRow][nrCol];

    try{
        input = new Scanner(filename);

        while(input.hasNext()){

        }   
    }
}

2 个答案:

答案 0 :(得分:1)

确保您要导入java.io.*(或者您需要的特定类)以包含FileNotFoundException类。由于您没有指定要完全解析文件的方式,因此要显示如何填充2D数组有点困难。但是这个实现使用了Scanner,File和FileNotFoundException。

public AsciiArt(String filename, int nrRow, int nrCol){
    this.nrRow = nrRow;
    this.nrCol = nrCol;
    image = new char[nrRow][nrCol];

    try{
        Scanner input = new Scanner(new File(filename));

        int row = 0;
        int column = 0;

        while(input.hasNext()){
            String c = input.next();
            image[row][column] = c.charAt(0);

            column++;

            // handle when to go to next row
        }   

        input.close();
    } catch (FileNotFoundException e) {
        System.out.println("File not found");
        // handle it
    }
}

答案 1 :(得分:0)

这样做的一个粗略方法是:

    File inputFile = new File("path.to.file");
    char[][] image = new char[200][20];
    InputStream in = new FileInputStream(inputFile);
    int read = -1;
    int x = 0, y = 0;
    while ((read = in.read()) != -1 && x < image.length) {
        image[x][y] = (char) read;
        y++;
        if (y == image[x].length) {
            y = 0;
            x++;
        }
    }
    in.close();

但是我确信还有其他方法可以更好,更有效但你得到的原则。