Java拆分txt文件的写法
我是学生物信息的,想问一下怎么能将TXT文件,按照内容分割?比如将含有“a>b>c>d”的TXT文件分割成4个分别含有“>a”,“>b”,“>c”,">d"的.txt文件...
我是学生物信息的,想问一下怎么能将 TXT文件,按照内容分割? 比如将含有“a>b>c>d”的TXT文件 分割成4个 分别含有“>a”,“>b”,“>c”,">d"的.txt文件并存储在一个文件夹中,我需要“>”。分割后的TXT文件按照">"号后的1个字符命名。就是a.txt ,b.txt, c.txt和 d.txt的四个文件
展开
7个回答
展开全部
以下一个拆分txt的Util类
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FileCutter {
/**
*
*sourceFile:源文件的路径
*targetDirectory:保存文件的目录(例:'C:\\')
*prefix:是分割后文件的前缀(例:'2015-09-09')
*size:是分隔后单一文件的大小单位是2kb的倍数,size传10,分割后单一文件就是20K。传100,文件就是2M一个。
*
**/
public static void cutToMoreFile(String sourceFile, String targetDirectory, String prefix, int size)
{
//加载源文件
File source = new File(sourceFile);
InputStream in = null;
OutputStream out = null;
int len = 0;
int fileIndex = 1;
//设置一次加载的大小
byte[] buffer = new byte[2048];
try
{
//把源文件读到InputStream中
in = new FileInputStream(source);
//循环
while(true)
{
//分割后的文件流
out = new FileOutputStream(targetDirectory + File.separator + prefix + fileIndex++ + ".txt");
for(int i = 0; i < size; i++)
{
//如果文件读取完就退回方法。
if((len = in.read(buffer)) != -1)
{
//写入分割后的文件
out.write(buffer, 0, len);
}else
{
//执行finally内容后,退出方法
return;
}
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally
{
try {
//关系流
in.close();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
以上,详细请看注释
2013-03-29
展开全部
import java.io.*;
import java.util.*;
public class FileSplitTxtDemo{
BufferedReader reader;
File file;
ArrayList lstFileMsg;
ArrayList lstFileName;
public FileSplitTxtDemo(){
try{
lstFileMsg = new ArrayList();
lstFileName = new ArrayList();
reader = new BufferedReader(new FileReader("msg.txt")); //打开一个需要获取信息的文件 }catch(Exception ex)
{
}
}
//获取文件信息,把符合的信息添加到lstFileName
public void getFileMsg(){
String fileStr = "";
try{
while((fileStr=reader.readLine())!=null)
{
String[] fileStrs = fileStr.split(">");
if(fileStrs.length>0){
lstFileMsg.add(fileStrs);
}
}
reader.close();
}catch(Exception ex){ }
}
//分解字符串,获取文件名字
public void getFileName(){
String fileName = "";
for(int i =0;i<lstFileMsg.size();i++){
String[] fileNames = (String[])lstFileMsg.get(i);
for(int j = 1;j<fileNames.length;j++){ //因为取>后面字母,所以j=0不需要
lstFileName.add(fileNames[j].substring(0,1));
}
}
}
//生成txt文件
public void initTxtFile(){
for(int i =0;i<lstFileName.size();i++){
file = new File("myTxt"); //所有文件存放的文件夹
file.mkdirs();
try {
File f1=new File(file,lstFileName.get(i).toString()+".txt"); //创建文件
f1.createNewFile();
System.out.println("文件"+lstFileName.get(i).toString()+".txt创建成功");
}catch(IOException e) {
System.out.println("创建失败");
} }
}
public static void main(String args[]){
FileSplitTxtDemo obj = new FileSplitTxtDemo();
obj.getFileMsg();
obj.getFileName();
obj.initTxtFile();
}
}
import java.util.*;
public class FileSplitTxtDemo{
BufferedReader reader;
File file;
ArrayList lstFileMsg;
ArrayList lstFileName;
public FileSplitTxtDemo(){
try{
lstFileMsg = new ArrayList();
lstFileName = new ArrayList();
reader = new BufferedReader(new FileReader("msg.txt")); //打开一个需要获取信息的文件 }catch(Exception ex)
{
}
}
//获取文件信息,把符合的信息添加到lstFileName
public void getFileMsg(){
String fileStr = "";
try{
while((fileStr=reader.readLine())!=null)
{
String[] fileStrs = fileStr.split(">");
if(fileStrs.length>0){
lstFileMsg.add(fileStrs);
}
}
reader.close();
}catch(Exception ex){ }
}
//分解字符串,获取文件名字
public void getFileName(){
String fileName = "";
for(int i =0;i<lstFileMsg.size();i++){
String[] fileNames = (String[])lstFileMsg.get(i);
for(int j = 1;j<fileNames.length;j++){ //因为取>后面字母,所以j=0不需要
lstFileName.add(fileNames[j].substring(0,1));
}
}
}
//生成txt文件
public void initTxtFile(){
for(int i =0;i<lstFileName.size();i++){
file = new File("myTxt"); //所有文件存放的文件夹
file.mkdirs();
try {
File f1=new File(file,lstFileName.get(i).toString()+".txt"); //创建文件
f1.createNewFile();
System.out.println("文件"+lstFileName.get(i).toString()+".txt创建成功");
}catch(IOException e) {
System.out.println("创建失败");
} }
}
public static void main(String args[]){
FileSplitTxtDemo obj = new FileSplitTxtDemo();
obj.getFileMsg();
obj.getFileName();
obj.initTxtFile();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按照你的要求编写的Java程序如下:
把含有>a>b>c>d的D:\source.txt文件分割后分别存在D:\tmp文件夹中的a.txt,b.txt,c.txt和d.txt文件中。
import java.io.BufferedReader;import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class BB { public static void main(String[] args) {
BufferedReader br;
FileWriter fw=null;
BufferedWriter bw=null;
String s;
try {
br=new BufferedReader(new FileReader("D:\\source.txt"));
while((s=br.readLine())!=null){
String regex=">([A-Za-z]+)";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(s);
while(m.find()){
System.out.println(m.group(1));
System.out.println(m.group());
File outFile = new File("D:\\tmp\\"+m.group(1).substring(0, 1)+".txt");
if (!outFile.getParentFile().exists()) {
outFile.getParentFile().mkdirs();
}
fw = new FileWriter(outFile);
bw=new BufferedWriter(fw);
bw.write(m.group());
bw.newLine();
bw.flush();
}
}
br.close();
fw.close();
bw.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
把含有>a>b>c>d的D:\source.txt文件分割后分别存在D:\tmp文件夹中的a.txt,b.txt,c.txt和d.txt文件中。
import java.io.BufferedReader;import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class BB { public static void main(String[] args) {
BufferedReader br;
FileWriter fw=null;
BufferedWriter bw=null;
String s;
try {
br=new BufferedReader(new FileReader("D:\\source.txt"));
while((s=br.readLine())!=null){
String regex=">([A-Za-z]+)";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(s);
while(m.find()){
System.out.println(m.group(1));
System.out.println(m.group());
File outFile = new File("D:\\tmp\\"+m.group(1).substring(0, 1)+".txt");
if (!outFile.getParentFile().exists()) {
outFile.getParentFile().mkdirs();
}
fw = new FileWriter(outFile);
bw=new BufferedWriter(fw);
bw.write(m.group());
bw.newLine();
bw.flush();
}
}
br.close();
fw.close();
bw.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class SplitCreateFile {
//从你源文件里的内容获得你想要创建的文件名
public static String getTxtFromFile(File file){
if(file.exists()){
BufferedReader br=null;
String fileName =null;
try {
br = new BufferedReader(new FileReader(file));
String line =null;//用于接收 readLine的返回值,如果读不到数据,line就为null
while((line=br.readLine())!=null){
fileName = line;
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(br!=null){
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return fileName;
}else{
System.out.println("文件不存在");
return new String();
}
}
//创建文件
public static void createNewFile(String fileName) {
try {
String[] fileNames = fileName.split(">");//按照">"分割
for(String f:fileNames){
File file = new File(f+".txt");
if (!file.exists()) {
file.createNewFile();
}else{
System.out.println(f+" 文件已经存在");
}
}
} catch (Exception e) {
System.out.println("新建目录操作出错");
e.printStackTrace();
}
}
public static void main(String[] args) {
File file = new File("a.txt");/*这里输入你存放那个a>b>c>d的txt文件,可以加上路劲 ,比如说你那个文件放到d:\workspace ,可以写成File file = new File("d:\wordspace\a.txt");*/
String fileNames = getTxtFromFile(file);
createNewFile(fileNames); //注意,创建的txt文件默认是放在你编译java存放.class的文件下,但是这个你可以修改路劲把新建的文件存放在哪里
}
}
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class SplitCreateFile {
//从你源文件里的内容获得你想要创建的文件名
public static String getTxtFromFile(File file){
if(file.exists()){
BufferedReader br=null;
String fileName =null;
try {
br = new BufferedReader(new FileReader(file));
String line =null;//用于接收 readLine的返回值,如果读不到数据,line就为null
while((line=br.readLine())!=null){
fileName = line;
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(br!=null){
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return fileName;
}else{
System.out.println("文件不存在");
return new String();
}
}
//创建文件
public static void createNewFile(String fileName) {
try {
String[] fileNames = fileName.split(">");//按照">"分割
for(String f:fileNames){
File file = new File(f+".txt");
if (!file.exists()) {
file.createNewFile();
}else{
System.out.println(f+" 文件已经存在");
}
}
} catch (Exception e) {
System.out.println("新建目录操作出错");
e.printStackTrace();
}
}
public static void main(String[] args) {
File file = new File("a.txt");/*这里输入你存放那个a>b>c>d的txt文件,可以加上路劲 ,比如说你那个文件放到d:\workspace ,可以写成File file = new File("d:\wordspace\a.txt");*/
String fileNames = getTxtFromFile(file);
createNewFile(fileNames); //注意,创建的txt文件默认是放在你编译java存放.class的文件下,但是这个你可以修改路劲把新建的文件存放在哪里
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先用fileinputstream把txt文件读成string。
用substring方法切割string,拆成多个string。
再fileoutputstring把多个string写进多个txt文档。
用substring方法切割string,拆成多个string。
再fileoutputstring把多个string写进多个txt文档。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询