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+"毫秒");
}
}
转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 + "毫秒");
}
}
在我升级版本的过程中发现:一定要先了解清楚V2的新特性,然后再从V1升级到V2,否则升级到一半会出现无从下手的问题:
因为通过V2版本的CLI工具生成的dao、model,和V1版本是不一致的:废弃了gmvc模块等,也引入了新的模块。
V2版本支持gf gen service
的方式生成service层,统一我们接口逻辑的实现方式,引入了logic层和service层的概念
结合自己的升级经历,分享给大家学习GoFrame V2必知必会的知识点: