求java高手,java读取txt中内容,按内容拆分成多个txt,如下图,拆分成两个txt文件 30

红框中拆分成两个不同的txt... 红框中拆分成两个不同的txt 展开
 我来答
gdmmd
2015-05-02 · TA获得超过1279个赞
知道大有可为答主
回答量:1581
采纳率:66%
帮助的人:1013万
展开全部

没有定拆分规则   以下代码是前5个行为一个txt   其余的为另外一个txt

package com.kidd.baiduzhidao;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class baiduzhidao {

    public static void main(String[] args) {
        File file = new File("D:"+File.separator+"t1.txt");

        String[] ss = readTxt(file);
        
        if(ss==null || ss.length==0){
            System.out.println("读取txt内容发生错误,txt内容可能为空.");
            return ;
        }

        file = new File("D:"+File.separator+"1.txt");
        
        if(!writeTxt(file, ss ,0, 5)){
            System.out.println("写入第一个txt发生了错误.终止");
            return ;
        }
        
        file = new File("D:"+File.separator+"2.txt");
        if(!writeTxt(file, ss ,5)){
            System.out.println("写入第二个txt发生了错误.终止");
            return ;
        }
        
    }

    /**
     * 写出数组内容从start开始的所有内容到txt文件
     * @param file 待写出的txt文件的File形式
     * @param ss 数组对象
     * @param start 开始位置
     * @return 成功返回true  发生错误返回false
     */
    private static boolean writeTxt(File file, String[] ss, int start) {
        return writeTxt(file,ss,start,ss.length-start);
    }

    /**
     * 写出数组内容从start位置开始共写出length个  到txt文件
     * @param file 待写出的txt文件的File形式
     * @param ss  数组对象
     * @param start 开始位置
     * @param length  写出长度
     * @return  成功返回true  发生错误返回false
     */
    private static boolean writeTxt(File file, String[] ss,int start, int length) {
        FileWriter fWriter;
        try {
            fWriter = new FileWriter(file, false);
        } catch (IOException e) {
            e.printStackTrace();
            return false ;
        }
        
        try {
        for(int i = start , k = ss.length ; i < k && i < start+length ; i++){
                fWriter.write(ss[i]+"\r\n");
        }
        
        } catch (IOException e) {
            e.printStackTrace();
            if(!closeFileWriter(fWriter)){
                fWriter = null ;
            }
            return false ;
        }

        if(!closeFileWriter(fWriter)){
            fWriter = null ;
        }
        
        return true ;

    }

    /**
     * 关闭文件流
     * @param fWriter
     * @return  成功关闭返回true,发生错误返回false
     */
    private static boolean closeFileWriter(FileWriter fWriter) {
        if(fWriter==null){
            return false;
        }
        try {
            fWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return true ;
    }

    /**
     * 读取txt文件内容,返回该文本内容的String[]形式
     * @param file txt文件的File形式
     * @return  该文本内容的String[]形式  若读取发生错误  则返回null
     */
    private static String[] readTxt(File file) {
        Scanner scanner;
        try {
            scanner = new Scanner(file);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return null;
        }

        String string = "";

        /**
         * 读取到的每一行用,分割
         */
        while (scanner.hasNext()) {
            string += scanner.nextLine() + ",";
        }

        scanner.close();
        
        return string.split(",");
    }

}
liuyang054
2015-05-01 · TA获得超过9093个赞
知道大有可为答主
回答量:5317
采纳率:78%
帮助的人:5305万
展开全部
java对文件进行逐行读取, 判断每一行的开头是不是J01 读入两个J01后马上向新文件中写数据就行了。
追问
“读入两个J01后马上向新文件中写数据”  初学java,求代码
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式