前言:我有一個出租車軌跡的txt文本,其中包括多條軌跡。我想把這個文本按照單條軌跡輸出出來,每條軌跡放在一個txt文本中。java
思路:重要問題就集中在,如何動態的指定輸出文件的名字。我想到了StringBuilder,StringBuilder能夠拼接字符串,我能夠動態改變,表明輸出路徑的字符(我這裏經過循環一個整數,而後再拼接到字符串上),這樣就能夠經過變化StringBuilder,來改變FIle對象對應的路徑。app
上代碼(其中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(); } }