java 文件分隔符,Java如何通过分隔符字符串将文本文件分隔为文件

I Want to separate a text file with separator.

Example

BEGIN:VCARD

VERSION:2.1

X-TIMES_CONTACTED:2

X-LAST_TIME_CONTACTED:1438878121912

N:SomeOne

FN:...

TEL;CELL:111122222

TEL;CELL:333334444

PHOTO;ENCODING=BASE64;JPEG:/...CfbNQMCwwBk1ZtrKadgEXNNC2P/Z

END:VCARD

BEGIN:VCARD

VERSION:2.1

N:Another

FN:Victim

TEL;CELL:888888888888

TEL;CELL:99999999

END:VCARD

with method : SplitFile("c:\test\test.vcf", "END:VCARD", "c:\test\output");

解决方案

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.nio.file.Files;

import java.nio.file.Path;

import java.nio.file.Paths;

import java.nio.file.StandardOpenOption;

import org.apache.commons.io.FilenameUtils;

public class MainClass {

public static void main(String[] args) {

SplitFile("c:\\test\\test.vcf", "END:VCARD", "c:\\test\\output");

}

private static void SplitFile(String fileName, String seperateChars, String destFolder) {

try {

Path p = Paths.get(fileName);// or

// FileSystems.getDefault().getPath(fileName)

String lines = new String(Files.readAllBytes(p));

String fName = FilenameUtils.getBaseName(p.toString());

String fExt = FilenameUtils.getExtension(p.toString());

int fCounter = 0;

int beginMark = 0;

int endMark = 0;

destFolder = FilenameUtils.normalizeNoEndSeparator(destFolder);

while ((endMark = lines.indexOf(seperateChars, beginMark)) >= 0) {

fCounter++;

String buf = lines.substring(beginMark, endMark + seperateChars.length());

String fOut = String.format("%s\\%s%05d.%s", destFolder, fName, fCounter, fExt);

System.out.println(fOut);

beginMark = endMark + seperateChars.length();

Files.write(Paths.get(fOut), buf.getBytes(), StandardOpenOption.CREATE);

endMark = -1;

}

System.out.println("Done!");

} catch (IOException e) {

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值