`

java 文件分割传输

阅读更多
public class Base64FilterOutputStream  extends FilterOutputStream{

	public Base64FilterOutputStream(OutputStream out) {
		super(out);
		
	}
	@Override
	public void write(int b)throws IOException{
		if(b!=13&&b!=32&&b!=10)
			super.write(b);
	}
}

 

public static File convert2Base64File(InputStream is) throws IOException{
		BASE64Encoder b64=new BASE64Encoder();
		Random rd=new Random();
		File file=new File(System.getProperty("user.dir")+File.separator+rd.nextInt(99999));
		OutputStream bos=new Base64FilterOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
		b64.encodeBuffer(is, bos);
		bos.flush();
		bos.close();
		is.close();
		return file;
	}

 

private static final int FILE_PIECE_SIZE = 1024 * 100;
 

 

public void upgradeVersion(BmVersionUpgrade pkg, InputStream is) throws UserOperationError {
		File f = null;
		try {
			f = convert2Base64File(is);
			long size = f.length();
			long lastPieceSize = size % FILE_PIECE_SIZE;
			long count = size / FILE_PIECE_SIZE;
			if (lastPieceSize > 0)
				count += 1;
			else
				lastPieceSize = FILE_PIECE_SIZE;

			
			Reader reader = IOUtils.getReader(f, "US-ASCII");
			
			char[] b = new char[FILE_PIECE_SIZE];
			for (int i = 0; i < count; i++) {
				int len = reader.read(b);
				String content = new String(b, 0, len);
                                //将content放入xml中
                                ByteArrayOutputStream out=new ByteArrayOutputStream();
                                TransformerFactory tf = TransformerFactory.newInstance();
		                Transformer t = null;
		                try {
			             t = tf.newTransformer();
			            if(wrapLine)
				         t.setOutputProperty(OutputKeys.INDENT, "yes");
			                 t.setOutputProperty(OutputKeys.METHOD, "xml");
			                 t.setOutputProperty(OutputKeys.ENCODING, "utf-8");
		                 } catch (TransformerConfigurationException tce) {
			
		                 }
		                 DOMSource doms = new DOMSource(doc);
		                 StreamResult sr = new StreamResult(os);
		                 try {
			             t.transform(doms, sr);
		                 } catch (TransformerException te) {
			            //处理异常
		                  }
                                  out.flush();
		                  out.close();
                                 byte[] bs = out.toByteArray();
                                 //TODO bs可以在网络上传输
			}
			f.delete();
		} catch (IOException e) {
			e.printStackTrace();
			throw new UserOperationError(e.getMessage());
		}  finally {
			if(f != null) {
				f.delete();
			}
		}
	}
分享到:
评论

相关推荐

    java文件分割压缩

    Java文件分割压缩是一种常见的操作,尤其在处理大数据或者网络传输时非常有用,因为单个大文件可能会导致处理效率低或传输困难。以下是一些相关的Java编程知识点: 1. **文件I/O操作**:在Java中,`java.io`包提供...

    java文件分割器java文件分割器

    根据给定的文件信息,我们可以总结出以下关于Java文件分割器的重要知识点: ### Java文件分割器功能概述 Java文件分割器是一种工具,用于将大文件分割成多个小文件,或者将多个小文件合并成一个大文件。这在处理...

    用JAVA实现文件的分割

    文件分割是其中的一个子领域,它涉及到将一个大文件拆分成多个小文件以便于传输、存储或处理。本篇将详细介绍如何使用Java实现文件的分割,并提供相关的代码示例。 首先,我们需要理解文件分割的基本原理。文件分割...

    java文件p2p传输

    Java文件P2P传输是一种利用Java编程语言实现的点对点(P2P)文件共享技术,它模仿了像电驴(eDonkey)和迅雷这样的流行下载工具,允许用户在局域网(LAN)或互联网上进行高效的数据交换。这种技术的核心是通过套接字...

    java 分割文件 将大文件分割成小文件

    在Java编程语言中,分割大文件是一项常见的任务,特别是在处理大量数据或需要分批传输大文件的场景下。本文将详细介绍如何使用Java将一个大文件按照特定条件(如文件大小或生成日期)分割成多个小文件。 首先,我们...

    如何利用Java实现QQ文件传输功能

    例如,对于UDP数据包,通常有最大长度限制,因此可能需要将大文件分割成多个数据包发送。对于TCP连接,传输大文件时,需要关注缓冲区大小、连接超时和重传机制等。 综上所述,利用Java实现文件传输功能需要掌握网络...

    java文件分割合并

    在Java编程语言中,文件操作是常见的任务之一,特别是在处理大型文件时,有时我们需要将大文件分割成多个小文件,以便于传输、存储或者优化处理效率。同样,我们也可能需要将这些小文件重新合并成原始的大文件。在这...

    java 文件分割器 文件分割器

    以下是一个简单的Java文件分割器实现的步骤: 1. **打开源文件**:使用`FileInputStream`打开要分割的源文件。通常会配合`BufferedInputStream`以提高读取效率。 ```java FileInputStream fis = new ...

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

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

    java socket 大文件传输,快速传输(包的分片,组装)源码

    Java Socket 大文件传输是网络编程中的一个关键领域,它涉及到高效的数据传输、包的分片与组装,以及网络协议的选择。在这个场景下,我们通常会用到TCP和UDP这两种传输层协议,以及Java的非阻塞I/O(NIO)技术。下面...

    基于java的文件分割器源码

    本篇文章将详细探讨基于Java的文件分割器和合并器的实现原理、相关知识点以及源码解析。 首先,文件分割是在大文件处理时常用的一种技术。当一个文件过大,无法一次性读取或者传输时,可以将其分割成多个小文件进行...

    Java文件分割程序源代码.rar

    Java文件分割程序是一种用于大文件处理的技术,尤其在需要传输或存储大文件时非常有用。这个源代码包,"Java文件分割程序源代码.rar",提供了实现这一功能的Java编程逻辑,可以跨多个平台运行,这得益于Java的“一次...

    java文件p2p传输_java_

    Java文件P2P传输涉及到的是网络编程中的对等网络(Peer-to-Peer)技术,这是一种分布式网络架构,其中每个节点既是服务的提供者也是服务的消费者。在Java中实现P2P传输,需要掌握以下几个核心知识点: 1. **Java...

    [计算机项目]基于java的文件传输系统设计与实现(项目报告+源代码).zip

    在本项目中,"基于Java的文件传输系统设计与...综上所述,这个Java文件传输系统项目涵盖了网络编程基础、并发处理、安全性、用户体验等多个核心IT领域,对于学习和理解Java技术栈及软件开发流程具有很高的参考价值。

    java文件传输系统

    8. **文件分块传输**:对于大文件,系统可能采用分块传输的方式,将文件分割成小块并发传输,提高效率并降低因网络问题导致的失败概率。 9. **文件完整性校验**:使用哈希算法(如MD5或SHA-256)生成文件的校验和,...

    java_spliter.zip_java split_java spliter_分割文件

    学习这个Java文件分割程序,你可以了解到以下关键知识点: 1. Java的I/O流:包括FileInputStream、FileOutputStream,以及它们的使用方式。 2. 文件操作:如打开、读取、写入和关闭文件。 3. 流的缓冲:可能会用到...

    JAVA文件分割合并器

    【JAVA文件分割合并器】是一种基于Java编程语言开发的实用工具,主要功能是对大文件进行高效地分割和合并。在日常工作中,我们可能遇到需要处理大量数据或传输超大文件的情况,这时文件分割和合并的功能就显得尤为...

    java实现多线程文件传输

    - **分割文件**:大文件可以被分割成多个小块,每个小块由一个单独的线程负责传输。 - **同步机制**:为了避免数据冲突,可以使用`synchronized`关键字或者`Lock`接口的实现(如`ReentrantLock`)进行同步控制。 ...

    Java实现文件分割与合并

    ### Java实现文件分割与合并 #### 一、概述 本文将详细介绍如何使用Java语言实现文件的分割与合并功能。此技术对于数据传输、备份或处理大量数据时非常有用。通过分割大文件为较小的部分,可以有效地减少单个文件...

    JAVA文件传输工具

    【JAVA文件传输工具】是一个由个人开发者编写的实用程序,主要功能是实现文件的高效、安全传输,尤其擅长处理大文件。此工具基于Java编程语言,因此具备跨平台特性,可以在多种操作系统上运行,如Windows、Linux和...

Global site tag (gtag.js) - Google Analytics