java 之 給定固定長度根據字元長分割文件
給定固定長度(陣列 aa[ ])
根據字元長(非位元組長度)分割文件
最後輸出去除空格以 ^ 拼接的文件
第一個class
package work;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
public class T1 {
// inputFilePath 輸入檔案路徑
public static void parseCunegFile(String inputFilePath,String outputFilePath, int[] aa) throws Exception {
BufferedWriter bw = null;
BufferedReader br = null;
int[] bb = new int[aa.length];
bb[0] = 0;
for (int i = 1; i < bb.length; i++) {
bb[i] = bb[i - 1] + aa[i - 1]+1;
aa[i]=aa[i]-1;
}
try {
//讀取輸入的檔案
File ifile = new File(inputFilePath);
InputStream is = new FileInputStream(ifile);
//沒有則建立輸出的檔案
File ofile = new File(outputFilePath);
//FileOutputStream out=new FileOutputStream(ofile);
if(!ofile.exists()){
ofile.createNewFile();
}
bw=new BufferedWriter(new FileWriter(ofile,true));
br = new BufferedReader(new InputStreamReader(is, Charset.forName("gbk")));
String line = "";
// 讀取每一行
while ((line = br.readLine()) != null) {
String str = "";
// 迴圈要獲取的長度
for (int i = 0; i < aa.length; i++) {
str = str.trim()+T2.substringByte(line, bb[i], aa[i]).trim()+"^";
} 鄭州人流多少錢
str = str.substring(0,str.length()-1);
bw.write(str+"\n");
}
} catch (IOException e) {
e.printStackTrace();
}finally {
br.close();
bw.close();
}
}
}
第二個class
package work;
public class T2 {
// orignal:需要擷取的每一行 start:從第幾位開始 count:擷取幾位
public static String substringByte(String orignal, int start, int count) throws Exception {
// 目標char Pull buff快取區間;
StringBuffer buff = new StringBuffer();
char c;
int len = 0;
// 遍歷String的每一個Char字元,計算當前總長度
// 如果到當前Char的的位元組長度大於要擷取的字元總長度,則跳出迴圈返回擷取的字串。
for (int i = 0; i < orignal.toCharArray().length; i++) {
c = orignal.charAt(i);
len += String.valueOf(c).getBytes("GBK").length;
if (len >= start && len <= start + count) {
buff.append(c);
}
if (len > start + count)
break;
}
// 返回最終擷取的字元結果;
// 建立String物件,傳入目標char Buff物件
return new String(buff);
}
}
測試
package work;
public class Test {
public static void main(String[] args) throws Exception {
int[] aa = {32,20,2,8,5,100,15,1,1,1,1,40,1};
T1.parseCunegFile("C:\\Users\\Administrator\\Desktop\\1.txt","C:\\Users\\Administrator\\Desktop\\2.txt", aa);
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2667701/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何設定圖片高度固定,寬度可以根據比例縮放
- JavaScript字串物件 之 根據字元返回位置、根據位置返回字元、字串操作方法JavaScript字串物件字元
- Elasticsearch 根據陣列長度過濾資料(qbit)Elasticsearch陣列
- flutter根據給定寬度自適應縮放字型大小Flutter
- 直播系統平臺搭建,自定義控制元件根據圖片寬度設定長度控制元件
- 字元陣列的長度字元陣列
- Python如何根據給定模型計算權值Python模型
- Python 如何根據給定模型計算權值Python模型
- QT生成固定長度的隨機字串QT隨機字串
- LeetCode133:給定一個字串,找出最長的不具有重複字元的子串的長度。例如,“abcabcbb”不具有重複字元的最長子串是“abc”,長度為3。對於“bbbbb”,最長的不具有重複字元的子串是LeetCode字串字元
- echarts圖表X軸文字過長解決解決方案:根據文字長度自動旋轉Echarts
- java 根據經緯度計算圓周Java
- php 根據給定字串時間獲取時區PHP字串
- Python基礎_根據隨機數_按長度_升序或降序排序列表Python隨機排序
- Echarts根據資料長度變換柱狀圖柱狀的顏色Echarts
- 按位長度進行字串的分割輸出,長度不足補0字串
- Laravel-生成唯一固定長度邀請碼Laravel
- PHP字串學習之如何返回漢字或混合字元的長度PHP字串字元
- go 語言中的 rune,獲取字元長度Go字元
- JavaScript 擷取字串右邊指定長度字元JavaScript字串字元
- 死磕以太坊原始碼分析之EVM固定長度資料型別表示原始碼資料型別
- 得到字串 位元組 長度 中文 兩個字元 英文一個字元字串字元
- js 根據滑鼠拖動(或手機長按)旋轉JS
- 獲取C/C++字串、字元陣列長度C++字串字元陣列
- Java 定義長度為 0 的陣列 / 空陣列Java陣列
- Android文字過長時根據關鍵字省略內容EllipsizeAndroid
- 根據瀏覽器的滑動條 固定導航欄瀏覽器
- java無重複字元的最長子串Java字元
- 計算返回單、雙位元組字元混合字串長度字元字串
- Redis 可以根據訊息儲存時長 將key 刪除嗎Redis
- Java根據地理位置獲取經緯度(呼叫百度地圖API)Java地圖API
- 根據題庫設定刷題程式
- leetcode 之無重複字元的最長子串LeetCode字元
- 讓 Android 輸入框只能輸入固定長度的中英文Android
- 根據兩點經緯度計算距離和角度——java實現Java
- 單據表頭錄入控制元件長度調整控制元件
- SqlSugarClient 程式碼優先建表, 根據給定的實體類,建立SQL語句, 之後建立MySQL表SqlSugarclientMySql
- 根據經緯度計算兩點之間的距離的公式公式