`
dannyhz
  • 浏览: 397690 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

大文件 分解为小文件 java

 
阅读更多

package zx.tools;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class FileSpiliter {
	
	/**
	 * 按行分割文件
	 * @param rows 为多少行一个文件 
	 * @param sourceFilePath 为源文件路径 
	 * @param targetDirectoryPath 文件分割后存放的目标目录
	 */
	public static void splitDataToSaveFile(int rows, String sourceFilePath,
			String targetDirectoryPath) {
		long start1 = System.currentTimeMillis();
		
		File sourceFile = new File(sourceFilePath);
		File targetFile = new File(targetDirectoryPath);
		if (!sourceFile.exists() || rows <= 0 || sourceFile.isDirectory()) {
			return;
		}
		if (targetFile.exists()) {
			if (!targetFile.isDirectory()) {
				return;
			}
		} else {
			targetFile.mkdirs();
		}
		try {
 
			InputStreamReader in = new InputStreamReader(new FileInputStream(sourceFilePath),"UTF-8");
			BufferedReader br=new BufferedReader(in);
			
			BufferedWriter bw = null;
			StringBuilder str = new StringBuilder();
			String tempData = br.readLine();
			int i = 1, s = 0;
			long start2 = System.currentTimeMillis();
			while (tempData != null) {
				str.append(tempData + "\r\n");
				if (i % rows == 0) {
					bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream( 
							targetFile.getAbsolutePath() + "/" +  sourceFile.getName() +"_" + (s+1) +".log"), "UTF-8"),1024); 
					
					bw.write(str.toString());
					bw.close();
					
					str = new StringBuilder();
					start2 = System.currentTimeMillis();
					s += 1;
				}
				i++;
				tempData = br.readLine();
			}
			if ((i - 1) % rows != 0) {
				
				bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream( 
						targetFile.getAbsolutePath() + "/" +  sourceFile.getName() +"_" + (s+1) +".log"), "UTF-8"),1024); 
				bw.write(str.toString());
				bw.close();
				br.close();
				
				s += 1;
			}
			in.close();
			
		} catch (Exception e) {
		}
	}
	
	public static void main(String[] args) {
		FileSpiliter.splitDataToSaveFile(100000, "D:/log/out.log-20180927_10.33.100.168", "D:/log/out.log-20180927/");
	}


}



分享到:
评论

相关推荐

    java文件分割器 对大文件可以方便的分解还原

    Java文件分割器是一种实用工具,尤其对于处理大文件而言,它可以将大文件分解为多个小文件,便于存储、传输或管理。这个特定的Java实现已经被打包成一个名为`split.jar`的可执行JAR文件,用户可以直接运行来对大文件...

    Java大文件传输示例额

    本示例主要关注如何高效地传输大文件,通过将大文件分解为较小的数据块,然后逐个传输这些小块,最后在接收端进行组装。这种方法可以有效避免一次性加载整个大文件到内存中导致的资源消耗和可能的溢出问题。 首先,...

    java大文件上传

    在Java编程中,大文件上传是一项常见的需求,特别是在文件共享、云存储或数据传输的应用场景。这个"java大文件上传"的项目很可能提供了一个实现大文件分块上传的示例,帮助开发者处理超过服务器默认限制的大文件。让...

    Java 大文件读取排序

    通过将任务分解为多个子任务并分配给不同的线程,可以并行处理文件的不同部分,从而提高效率。Java的并发API,如ExecutorService和Future,提供了一种有效的方式来进行这种并行化。 在实际应用中,工具的使用也非常...

    java 分解字符串

    在Java编程语言中,分解字符串是一项常见的任务,它涉及到对字符串进行分析,将字符串分割成多个子字符串。这个过程通常被称为字符串分割。在Java中,我们主要使用`String`类提供的`split()`方法来实现这一功能。...

    java class文件编译

    1. 魔数:标识文件为Java类文件,固定为0CAFEBABE。 2. 版本号:包含字节码版本和常量池的版本信息,用于确保JVM能够正确解析。 3. 常量池:存储各种常量、字符串、类和接口的引用等。 4. 类信息:包括类名、父类名...

    java 文件搜索引挚

    这个工具通常基于Java编程语言开发,利用Java的强大功能和跨平台特性,为用户提供高效、便捷的文件检索服务。在Java中实现文件搜索引挚涉及多个核心知识点,包括文件I/O操作、文件路径处理、多线程以及可能的搜索...

    java实现的文件切割器

    【Java实现的文件切割器】是一个基于Eclipse开发环境的项目,主要目标是将大文件分割成多个小文件,便于存储、传输或者处理。在Java编程语言中,我们可以利用流(Stream)的概念来读取和写入文件,实现文件的切割功能...

    Java 视频按帧分解成图片的maven包

    总的来说,这个项目提供了一个Java解决方案,利用Maven和特定的视频处理库(可能是JavaCV或bytedeco),实现了将视频文件分解为单独图像的功能。用户需要确保拥有良好的网络环境以下载依赖,或者在不方便的时候可以...

    java重复文件查找

    Java的FileInputStream和BufferedInputStream可以用来读取文件内容,而FileChannel的transferTo()方法可以用于高效地传输大文件。比较文件内容时,可以使用Arrays.equals()方法对比字节数组,或者利用MD5或SHA哈希...

    java多线程文件传输

    - **任务拆分**:将大任务分解为多个小任务,每个任务由一个线程处理,充分利用多核处理器资源。 - **线程优先级**:合理设置线程优先级可以调整线程执行顺序,但不保证优先级高的线程一定先执行。 7. **异常处理...

    java Antlr 4 语法文件合集

    2. **词法分析(Lexical Analysis)**:Antlr 4 通过词法分析器(Lexer)将输入的字符流分解为一系列的标记(Token)。这些标记对应于特定的词法规则,如关键字、标识符、数字等。在语法文件中,你可以定义词法规则...

    java 文件分割器 文件分割器

    文件分割是指将一个大文件分解成若干个固定大小或根据特定条件划分的小文件。在Java中,我们可以使用`java.io`包中的类来完成这个任务,如`FileInputStream`用于读取文件,`BufferedInputStream`提高读取效率,以及`...

    JAVA使用数字证书加密文件

    在“JAVA使用数字证书加密文件”的主题中,我们聚焦于如何使用RSA算法结合数字证书对文件进行加密。RSA是一种非对称加密算法,它的安全性基于大数分解的困难性,因此在网络安全中被广泛应用。 首先,我们需要了解几...

    java快速导出几十万百万生成DBF文件数据后台

    本项目“java快速导出几十万百万生成DBF文件数据后台”主要关注如何使用Java编程语言高效地处理大规模数据,将其导出为DBF文件格式。 首先,我们需要了解Java处理大量数据的基本策略。在Java中,处理大数据的关键...

    JAVA 使用数字证书加密解密文件

    RSA基于数论中的大数因子分解难题,即给定一个大合数,将其分解成两个素数的乘积非常困难。RSA算法就是利用这个特性来构建加密和解密过程的。公钥和私钥是通过数学计算得到的一对密钥,公钥用于加密,私钥用于解密,...

    java通过ucar读取气象(GFS,ES)文件数据转NC文件

    java通过ucar.ma2,ucar.nc2读取grib和grib2数据,并将读取的数据解析写入到NC文件中;亲测有效,若有疑问可私信交流!!!

    JAVA编程-分割合并文件-jar包中含源码

    在Java编程中,有时我们需要处理大文件,例如为了节省存储空间、提高传输效率或适应某些系统限制,可能需要将大文件分割成多个小文件。这个资源包提供了实现这一功能的代码,同时也支持将这些小文件合并回原始的大...

    java,RSA算法加密文件

    总结起来,Java中的RSA算法用于文件加密,主要涉及`java.security`包下的`KeyPairGenerator`、`KeyPair`、`PublicKey`、`PrivateKey`、`Cipher`等类,以及密钥的Base64编码和解码,对于大文件,通常结合对称加密算法...

    java 写的文件分割器

    可以将任何文件进行分割 可指定分割的单位大小(KB)

Global site tag (gtag.js) - Google Analytics