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的四个文件 展开
 我来答
editsad
2015-09-09 · TA获得超过456个赞
知道小有建树答主
回答量:94
采纳率:50%
帮助的人:54.4万
展开全部

以下一个拆分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();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
紫薇参星
科技发烧友

2013-03-28 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3599万
展开全部
按照你的要求编写的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();
}
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AreChan
2013-03-29 · 超过23用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:33万
展开全部
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的文件下,但是这个你可以修改路劲把新建的文件存放在哪里
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暗客默烛
2015-08-29 · TA获得超过736个赞
知道小有建树答主
回答量:779
采纳率:45%
帮助的人:239万
展开全部
首先用fileinputstream把txt文件读成string。
用substring方法切割string,拆成多个string。
再fileoutputstring把多个string写进多个txt文档。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式