java BufferedReader&Writer无法按预期工作

我试图做的是读取mnist火车文件,并用11位数字表示它的第一位数字,并保持其他数字不变。

所以3,1,4,6 ...到,0,6 ...(首先是“”位数,因此总共11位数)

我认为这是一件容易的事,但事实并非如此。

import java.io.*;
public class T {
public static void main(String[] args){
    File file = new File("./src/dataset/mnist_train.csv");
    File wfile = new File("./src/dataset/conv_mnist_train2.txt");

    try{
        BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
        BufferedWriter fileWriter = new BufferedWriter(new FileWriter(wfile));
        String line;
        String[] numbers;
        int g = 0,cnt = 0,cnt2 = 0;

        while ((line = bufferedReader.readLine()) != null) {
            cnt2++;
            numbers = line.split(",");
            for(String i : numbers){
                if(g == 0){
                    for(int j=0; j<10; ++j) {
                        if(j == Integer.parseInt(i)) fileWriter.write("," + 1);
                        else{ fileWriter.write("," + 0); cnt++;}
                    }
                    g++;
                }
                else {fileWriter.write("," +i); cnt++;}
            }
            fileWriter.newLine();

            System.out.println(numbers.length + " " + cnt + " " + cnt2);
            g = 0; cnt = 0;
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}
} 

g,cnt,cnt2是我用于调试的数字,但在这里没有发现任何问题;它自然地将每行785个字母转换为795个字母的新行。

import java.io.*;

public class Tes {
public static void main(String[] args){
    File file = new File("./src/dataset/conv_mnist_train2.txt");

    try{
        BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
        String line;
        int g = 0;

        while ((line = bufferedReader.readLine()) != null) {
            g++;
            String[] N = line.split(",");
            if(N.length != 795){
                System.out.println(N.length + " " + g);
                for(String i : N) System.out.print(i + " ");
                System.out.println();
            }
        }
    }catch(Exception e){
        e.printStackTrace();
    }

}
}

但是发生的是,当我运行第二个代码时,该代码不应打印任何内容,打印结果并说我的第59994行数据仅由311个字母组成。但是从我的第一个代码开始,我确认我的第59994行有795个字母。我不知道这是怎么回事。

我也尝试使用FileWriter和FileReader而不是BufferedWriter&Reader,但是它不能解决问题。有人可以告诉我怎么回事,以及如何解决此问题吗?

sdzsd999 回答:java BufferedReader&Writer无法按预期工作

问题是我没有关闭读写器。不知道它可能会导致严重错误。

本文链接:https://www.f2er.com/3002494.html

大家都在问