这篇文章给大家分享的是有关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()+"^";
}郑州人流多少钱 http://www.hnmt120.com/
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);
}
}
感谢各位的阅读!关于“java如何给定固定长度根据字符长分割文档”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。