Java把一個文件,輸出成多個文件

前言:我有一個出租車軌跡的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();
    }
}
相關文章
相關標籤/搜索