java BufferedReader&Writer无法正常工作

问题描述 投票:0回答:1

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

所以3,1,4,6 ...到,0,0,0,1,0,0,0,0,0,0,1,4,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,但是它不能解决问题。有人可以告诉我怎么回事,以及如何解决此问题吗?

java file-io bufferedreader bufferedwriter
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.