Java把一个文件,输出成多个文件
前言:我有一个出租车轨迹的txt文本,其中包括多条轨迹。我想把这个文本按照单条轨迹输出出来,每条轨迹放在一个txt文本中。
思路:重要问题就集中在,如何动态的指定输出文件的名字。我想到了StringBuilder,StringBuilder可以拼接字符串,我可以动态改变,代表输出路径的字符(我这里通过循环一个整数,然后再拼接到字符串上),这样就可以通过变化StringBuilder,来改变FIle对象对应的路径。
上代码(其中InputPoint是之前写好的一个读入文件的一个类)
import geotools.InputPoint; import geotools.PointRule; import java.io.*; import java.util.ArrayList; /** * 写一个类,用来把文件中的轨迹,每条轨迹都放在一个文件中 */ public class OneToMore { public static OutputStreamWriter out; public static ArrayList<PointRule> track=new ArrayList<>(); public static void oneToMore() throws IOException { /** * 每条轨迹得分别new一个file对象 */ /*先把数据读进来*/ InputPoint inputPoint=new InputPoint(); ArrayList<PointRule> p=inputPoint.Read(); /** * 先循环并按轨迹拆分 * 声明一个用来存储单条轨迹的集合 * 用布尔判断,声明时候开始读入什么时候结束 */ boolean start=false; int k=0; for (int i=0;i<p.size()-1;i++){ if (start){ track.add(p.get(i)); } if(p.get(i).getIsON()==1){ track.add(p.get(i)); start=true; } if (start&&p.get(i).getIsON()==0){ track.add(p.get(i)); start=false; String filename="E://桌面//1118原数据//"; StringBuilder s=new StringBuilder(filename); s.append(k); s.append(".txt"); out = new OutputStreamWriter( new FileOutputStream(new File(s.toString()),true)); BufferedWriter wr = new BufferedWriter(out); for (int j=0;j<track.size()-1;j++) { try { wr.write(String.valueOf(track.get(j).getCarnum())); wr.write("\t"); wr.write(String.valueOf(track.get(j).getIsON())); wr.write("\t"); wr.write(String.valueOf(track.get(j).getDate())); wr.write("\t"); wr.write(String.valueOf(track.get(j).getLat())); wr.write("\t"); wr.write(String.valueOf(track.get(j).getLon())); wr.write("\t"); wr.write(String.valueOf(track.get(j).getSpeed())); wr.write("\t"); wr.write(String.valueOf(track.get(j).getDirect())); wr.write("\n"); wr.flush(); } catch (IOException e) { e.printStackTrace(); } } wr.close(); track.clear(); k++; } } } /** * 程序入口测试 */ public static void main(String[] args) throws IOException { OneToMore.oneToMore(); } }
记录一下我的学习