为什么写进去的数字是乱码怎么改



public class filewriter和bufferedwriter {

        public static void main(String[] args) throws IOException{
                // TODO 自动生成的方法存根
                //分别使用 FileWriter 和 BufferedWriter 
                //往文件中写入 10万个随机数,比用时的多少。
                long startTime = System.currentTimeMillis();
                
                FileWriter fileWriter = new FileWriter("C:\\Users\\33202\\Desktop\\bbb\\bbb.txt");
                
                Random random = new Random();
                
                for(int i =0 ; i<100000;i++) {
                
                    int randomNumber = random.nextInt(100);
                        fileWriter.write(randomNumber);
                }
                
                fileWriter.flush();
                
                fileWriter.close();
                
                long endTime = System.currentTimeMillis();
                
                long duration =endTime-startTime;
                
                System.out.printf("程序运行时间"+duration+"毫秒");


        }

}

img

转String再存试试

 public static void main(String[] args) throws IOException {
        // 记录开始时间
        long startTime = System.currentTimeMillis();

        FileWriter fileWriter = new FileWriter("D:\\test\\bs.txt");

        Random random = new Random();

        for (int i = 0; i < 100000; i++) {
            int randomNumber = random.nextInt(100);
            String randomString = String.valueOf(randomNumber);
            fileWriter.write(randomString);
            fileWriter.write(System.lineSeparator()); // 每个数字写入一行
        }

        fileWriter.flush();
        fileWriter.close();

        // 记录结束时间
        long endTime = System.currentTimeMillis();

        long duration = endTime - startTime;

        System.out.printf("程序运行时间:" + duration + "毫秒");
    }

基于new bing部分指引作答:
您的代码存在一些问题。首先,您在使用FileWriter写入文件时,并没有将随机数转换为字符串形式,导致写入的是数值的ASCII码而不是数字本身。其次,您可以使用BufferedWriter来提高写入性能。

以下是修正后的示例代码:

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;

public class FileAndBufferedWriter {

    public static void main(String[] args) throws IOException {
        long startTime = System.currentTimeMillis();

        FileWriter fileWriter = new FileWriter("C:\\Users\\33202\\Desktop\\bbb\\bbb.txt");
        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

        Random random = new Random();

        for (int i = 0; i < 100000; i++) {
            int randomNumber = random.nextInt(100);
            bufferedWriter.write(Integer.toString(randomNumber)); // 将随机数转换为字符串形式并写入
            bufferedWriter.newLine(); // 写入换行符,每个随机数占一行
        }

        bufferedWriter.flush();
        bufferedWriter.close();

        long endTime = System.currentTimeMillis();
        long duration = endTime - startTime;
        System.out.printf("程序运行时间:%d 毫秒", duration);
    }
}

修正后的代码使用了BufferedWriter来对FileWriter进行包装,以提供缓冲写入功能,可以有效减少IO操作次数,从而提高写入效率。同时,通过使用Integer.toString()方法将随机数转换为字符串形式进行写入。

请注意指定正确的文件路径和名称,确保在运行代码前该目录下存在文件夹bbb并具有写入权限。

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;

public class FileWriterAndBufferedWriter {
    public static void main(String[] args) throws IOException {
        long startTime = System.currentTimeMillis();

        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("C:\\Users\\33202\\Desktop\\bbb\\bbb.txt"));

        Random random = new Random();

        for (int i = 0; i < 100000; i++) {
            int randomNumber = random.nextInt(100);
            bufferedWriter.write(String.valueOf(randomNumber));
            bufferedWriter.newLine();
        }

        bufferedWriter.flush();
        bufferedWriter.close();

        long endTime = System.currentTimeMillis();
        long duration = endTime - startTime;
        System.out.println("程序运行时间:" + duration + "毫秒");
    }
}