java按行分割文件名_JAVA怎么实现按行数分割文件

该Java代码示例展示了如何按字节或字符将文件分割成多个子文件。程序首先读取源文件,然后按指定大小(如每100个单位)创建新的目标文件,并将数据写入这些新文件中。最后,源文件被完全分割成多个部分。
摘要由CSDN通过智能技术生成

展开全部

import java.io.*;

/**

*

* 文件32313133353236313431303231363533e78988e69d8331333238666362分割

*/

public class FileSeparatorDemo1

{

/**

* 按字节分隔

* @param sourceFileUrl 源文件路径如:c:/a.txt

* @param targetFileUrl 目标文件路径文件夹

*/

public void separateFileByByte(String sourceFileUrl,String targetFileUrl)

{

File sourceFile = new File(sourceFileUrl);

//获得源文件名称

String sorceFileName= sourceFile.getName().split(".txt")[0];

try

{

//源文件文件流

FileInputStream fis = new FileInputStream(sourceFile);

int temp;

FileOutputStream fos = null; //目标文件文件流

int size = 0; //记录文件大小

int countFile = 1; //子文件数目

File targetFile = null;

do

{

if(size % 100 ==0)

{

//目标文件名称,以源文件名称加数据命名

String targetFileName = targetFileUrl + sorceFileName + countFile + ".txt";

targetFile = new File(targetFileName);

if(fos!=null)

{

fos.flush(); //刷新该流的缓冲

fos.close(); //关闭流

}

fos = new FileOutputStream(targetFile);

countFile++;

}

temp = fis.read(); //读文件

size++;

fos.write(temp); //写文件

}

while(fis.available()>0);//判断源文件是否还有流,即有没有读完

fis.close();

fos.flush();

fos.close();

System.out.println("文件分割完成!" );

}

catch (Exception e) {

System.out.println(e.getMessage());

e.printStackTrace();

}

}

/**

* 按字符分隔

* @param sourceFileUrl

* @param targetFileUrl

*/

public void separateFileByChar(String sourceFileUrl, String targetFileUrl)

{

File sourceFile = new File(sourceFileUrl);

String sourceFileName = sourceFile.getName().split(".txt")[0]; // 获得源文件名称

try

{

FileReader fr = new FileReader(sourceFile); // 源文件文件流

System.out.println("encoding:" + fr.getEncoding());

int temp;

FileWriter fw = null; // 目标文件文件流

int size = 0; // 记录文件大小

int countFile = 1; // 子文件数目

File targetFile = null;

do

{

if (size % 100 == 0)

{

String targetFileName = targetFileUrl + sourceFileName

+ countFile + ".txt"; // 目标文件名称,以源文件名称加数据命名

targetFile = new File(targetFileName);

if (fw != null)

{

fw.flush(); // 刷新该流的缓冲

fw.close();// 关闭流

}

fw = new FileWriter(targetFile);

countFile++;

}

temp = fr.read();// 读文件

size++;

fw.write(temp);// 写文件

}

while (temp != -1);// 判断源文件是否还有流,即有没有读完

fr.close();

fw.flush();

fw.close();

System.out.println("文件分割完成!");

}

catch (Exception e)

{

e.printStackTrace();

}

}

public static void main(String args[])

{

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String sourceFileUrl = null;

String targetFileUrl = null;

//输入源文件路径

System.out.println("源文件地址: \t");

try {

sourceFileUrl = br.readLine();

} catch (IOException e) {

e.printStackTrace();

}

//输入目标文件路径

System.out.println("\n目标文件地址: \t");

try {

targetFileUrl = br.readLine();

} catch (IOException e) {

e.printStackTrace();

}

System.out.println("源文件: " + sourceFileUrl + "\n目标文件: " + targetFileUrl);

FileSeparatorDemo1 fs = new FileSeparatorDemo1();

fs.separateFileByChar(sourceFileUrl, targetFileUrl);

}

}

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值