感觉这篇博客记录了我重复造轮子的过程,这显而易见是一个很多人实现过的功能呢。写这段代码主要是为了在文件中批量生成命令文件,也就是个文本生成器,用机器生成命令的好处很明显——人绝不可能手打1000多行代码,哪怕是复制黏贴主要部分,并且对一些参数进行修改。但是对机器来说循环个1000次,无论是怎么样的老爷机都可以轻松做到(还记得我初学变成的第一个作业就是循环输出1到1000,但是用的是学校公共机房最差的机子,但是依然可以很欢快的跑起来)。
其实作为一个程序员,原本是应该尽量避免重复造轮子这种事情的(显然我们可以找到各种生成文件的工具),然而鉴于任务的紧急性和成本之低(或者说找一个好用的工具成本远大于自己重新写一个),我最后决定用十几分钟的实际来写一个工具完成我要做的事情(好处是可以自己调试和简化一些没必要的逻辑)。
实际上我只要对几个数据进行组合拼接就能得到我想要的数据,而主要就是使用File类进行操作。因为实在太简单了,还是直接用代码说话。
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.util.Arrays;
import java.util.List;
public class FileTest {
public static void main(String[] args) {
File file = new File("/Users/tbtx/work/schedule.txt");
try {
if(!file.exists()) {
file.createNewFile();
} else {
file.delete();
file.createNewFile();
}
FileWriter fw = new FileWriter(file, true);
BufferedWriter bw = new BufferedWriter(fw);
List<String> actions = Arrays.asList("riding", "running", "swimming");
List<String> userNames = Arrays.asList("lily", "tom", "bob");
List<String> times = Arrays.asList("2018-2-2", "2018-3-3");
for(int i= 0; i<1000; i++) {
for(String username: userNames) {
for(String action: actions) {
for(String time: times) {
String request = username+" is "+action+" on "+time+"\r\n";
bw.write(request);
}
}
}
}
bw.flush();
bw.close();
fw.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Write is over");
}
}
这是最最简单的实现方式:先确定文件的路径,然后判断是否存在文件已有则删除新建,然后遍历所有参数拼接语句(如需要换行则加"\r\n"), 最后输出到我们定义好的文件里。