1. 程式人生 > >java 批量更改CSV檔案內容中指定位置的字元

java 批量更改CSV檔案內容中指定位置的字元

有104個一樣格式的檔案只是記錄數不同
這裡寫圖片描述
改為這個模式
這裡寫圖片描述
把最後的2改為4
也就是2表示兩條記錄,4表示總的記錄(包括第一行和最後一行)

@Test
    public void test4() throws Exception{
        String floderpath="D:\\input\\";
        /*String filename="ACS-4_GDC2_20171011_01.csv";
        String filepath=floderpath+filename;*/
        File floder=new File(floderpath);
        File [] files=null
; try{ if(!floder.isDirectory()){ System.out.println("不存在"); } files=floder.listFiles(); System.out.println(files.toString()); if(files.length==0){ System.out.println("資料夾無檔案"); } }catch
(Exception e){ System.out.println("----------------"); } for(int j=0;j<files.length;j++){ File file=files[j]; String filepath2=file.getPath(); List list=getFilepathString(filepath2); try{ isCorrentformat(list); int
rowNom= list.size(); // System.out.println(list.get(rowNom-1)); String lastLine= list.get(rowNom-1).toString(); // System.out.println(lastLine.charAt(2)); int number= StringCharToNumber(lastLine,2); if(number!=list.size()){ String rowNomStr=rowNom+""; StringBuilder sb=new StringBuilder(lastLine); sb.replace(2, 3, rowNomStr);//2 start 3 end not contains 2 ,contains 3 // sb.replace(2, 3, list.size()+""); System.out.println(sb); System.out.println(list); list.remove(list.size()-1); list.add(sb); System.out.println(list); // File file=new File(filepath); file.delete(); file.createNewFile(); if(writeToFile(file,list)){ System.out.println("success ---------"); }else{ System.out.println("error ------"); } } else{ System.out.println("檔案不需要更改"); } }catch(Exception e){ System.out.println("file format correct !!!"); } } } /** * 獲取檔案的內容 * @param filepath * @return */ public List getFilepathString(String filepath){ BufferedReader br=null; List<String> list=null; try{ list=new ArrayList<String>(); br=new BufferedReader(new FileReader(filepath)); String temp; while((temp=br.readLine())!=null){ list.add(temp); } }catch(IOException e){ System.out.println("getRowNum error "); } finally{ if(null !=br){ try{ br.close(); }catch(IOException e){ System.out.println("br close error"); } } } System.out.println("File's size:"+list.size()); return list; } /** * 寫入檔案並換行 * @param file * @param list * @return * @throws IOException */ public boolean writeToFile(File file,List list) throws IOException{ for(int i=0;i<list.size();i++){ String s=list.get(i)+"\r\n"; FileOutputStream fos=new FileOutputStream(file,true); PrintStream ps=new PrintStream(fos); System.out.println(s); ps.print(s); ps.close(); } return true; } /* * 檔案格式是否正確 */ public boolean isCorrentformat(List list){ try{ String str=list.get(list.size()-1)+""; if(StringCharToStr(str,0).equals("9")){ return true; } }catch(Exception e){ System.out.println("file format error"); } return false; } /** * String 的某一個字元轉換成Integer * @param c * @return Integer */ public Integer StringCharToNumber(String s,int index){ char c=s.charAt(index); char[] charArray = {c}; String replaceStr=new String(charArray); int number =Integer.parseInt(replaceStr); System.out.println(number); return number; } /** * String 的某一個字元轉換成String * @param c * @return Integer */ public String StringCharToStr(String s,int index){ char c=s.charAt(index); char[] charArray={c}; String replaceStr=new String(charArray); return replaceStr; }

處理多個檔案就需要先處理一個檔案再通過遍歷處理所有的檔案

邏輯就是把一個檔案的所有內容臨時儲存到List裡面,每個list.get(i)就是檔案的每一行資料,再刪除原來的檔案把檔名存到String裡,然後把資料處理後通過File類新建一個檔案再把List寫入到新檔案(每一行需要換行)

相關推薦

java 批量更改CSV檔案內容指定位置字元

有104個一樣格式的檔案只是記錄數不同 改為這個模式 把最後的2改為4 也就是2表示兩條記錄,4表示總的記錄(包括第一行和最後一行) @Test public void test4() throws Exception{

python 替換字串指定位置字元——一個簡單有效的方法

方法:序列化字串,存放到列表中,操作改變列表中的內容,最後連線列表內容。 #替換字串string中指定位置p的字元為c def sub(string,p,c): new =

boost::filesystem獲取目錄下的所有.xml檔名,並批量更改.xml檔案內容

第一步,遍歷資料夾並獲取所有.xml檔名,並存入files列表。 #include <boost/filesystem.hpp> namespace fs = boost::filesystem; int get_filenames(const std::s

java w3c解析xml檔案,獲取指定節點內容,讀取外部配置檔案

原始碼: package com.ys.adage.utils; import com.ys.adage.message.CodeObjectResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.

彙總制定目錄下的CSV 檔案內容至統一目錄

通過指令碼收集到終端計算機上的各類軟體安裝情況,並每臺計算機生成一個計算機命名的CSV 檔案,現在需要通過一個指令碼簡單的實現將檔案目錄內的所有檔案彙總到一個檔案中,故而寫了如下一個小程式。 -- coding: UTF-8 -- import osimport csv 遍歷指定目錄,顯示目錄下的所有檔

Java讀取CSV檔案內容到資料庫

CSV檔案主要是以逗號分割資料的,程式碼如下: File csv = new File("E:\\GeoIP2-City-Locations-en.csv"); // CSV檔案路徑 BufferedReader br = null; br = new BufferedReader(

java讀取csv檔案內容(逗號分隔、回車換行文字)

最近在做專案時需要每日更新大小額支援的銀行列表資訊,該檔案從核心下載,並使用java專案解析放到資料庫中,該檔案是文字檔案,一行為一條記錄,記錄中以逗號分隔欄位,欄位以雙引號包裹,起初以這種規則自己寫一個小程式也能用,於是寫了幾句程式碼,確實能執行解析出大部分內容,但有些特

python處理某些資料夾下的csv檔案,提取指定行到新檔案

需求: 提取2017-06--2017-08三個月的資料中的某些行到一個新的檔案中。 思路: 1.迴圈讀取每個資料夾下的每一個檔案 2.解析檔案,把滿足條件的資料寫到list中 3.把list寫入新檔案。 程式碼如下:【環境是Windows7專業版+Python2.7.9】

java實現批量匯入.csv檔案到mysql資料庫

這篇博文是在參加CCF時匯入.csv檔案時自己總結的,雖然NavicatForMysql可以匯入.csv檔案,可是當我匯入的時候不知道是檔案太大還是什麼原因,總是會出現失敗。然後就用java寫了一個批量匯入資料的類去匯入該.csv檔案,這裡也沒有考慮程式碼的結構,只是為了快

使用sed在一個檔案指定位置插入另外一個檔案內容-r命令的使用

在一個檔案的指定位置,比如說匹配到了一個單詞的行的下一行開始插入另外一個檔案的全部內容,可以使用sed的r命令。 [email protected]:~/aa$ cat data here is a test naughty loves cc and so on

shell 批量替換檔案指定字元

   1. sed  命令格式:    sed -i "s/old/new/g" `grep old -rl path`    例如:  把檔案中stv替換為hello  sed -i "s/stv/hello/g" `grep stv -rl ./test/` 只把檔案中“

C++ 讀取檔案內容指定型別的變數

#include <iostream> #include <fstream> #include <sstream> #include <string> using namespace std; int main(){ cout <<

java Api 讀取HDFS檔案內容

package dao; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import java.io.*; public class HDFSApi { /** * 讀取檔案內

BAT批處理提取檔案內容替換指定檔案內容

從test.txt裡查詢CLIENT_HOME 按=分割,獲取值  替換1.txt裡的所有CKIENT_HOME  由於修改的檔案是xml,所以需要chcp 65001切換編碼到utf8,否則會出現中文亂碼 批處理bat: adding: 0px; font-fam

Java之讀取XML檔案內容

下面是我的Persons.xml檔案內容: <?xml version="1.0" encoding="utf-8"?> <persons> <person id="0

selenium+python做引數化,直接用列表、讀取txt、csv檔案內容

1、直接在指令碼中寫一個列表作為引數: 以百度輸入框中每次輸入不同字元為例: from selenium import webdriver search_text = ['python', '中文', 'text'] for text in search_text: driv

Python批量生成csv檔案

引子: 生成的 txt 檔名稱事先不知道,其名稱根據資料範圍的不同生成不同名稱的 txt 檔案,主要應用 str(x) + ‘.txt’ 加以實現。 下面來一個簡單的範例: 把資料寫入 n1-n2.txt 中,n1,n2 由迴圈產生 import pandas

java筆記)java讀寫CSV檔案的方法

CSV檔案 逗號分隔值(Comma-Separated Values,CSV,有時也稱為字元分隔值,因為分隔字元也可以不是逗號),其檔案以純文字形式儲存表格資料(數字和文字)。純文字意味著該檔案是一個字元序列,不含必須像二進位制數字那樣被解讀的資料。CSV檔案由任意數目的記錄組成,記

AndroidTextView的文字內容指定關鍵字高亮顯示

讓TextView的文字中指定關鍵字高亮顯示的工具類 public class HighLightKeyWordUtil { /** * @param color 關鍵字

遞迴列印指定路徑下所有檔案內容指定檔案

# -*- coding: utf-8 -*- """遞迴列印指定路徑下所有檔案 Usage: printDirectory <printFilePath> <saveFilePath> """ from docopt import docopt imp