`
dwj147258
  • 浏览: 192051 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

文件传输

阅读更多

将文件转换为二进制的文件,并将二进制写进文件

package ceshiOA;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.ByteBuffer;
import java.util.Arrays;


public class Test {
	public static void main(String[] args) {doIt(5);}
	private static void doIt(int t){

		Test test = new Test();
		byte[] buffers =test.file2byte(new File("res/DocumentManager.rar"));
		OutputStreamWriter writer = null ;
		try{
			
			int num = buffers.length %t == 0 ? buffers.length /t : buffers.length/t+1;
			for(int j = 0 ; j < t ; j ++){
				writer = new OutputStreamWriter(new FileOutputStream("res/ProjectFiles/bytenumber("+j+").txt" , false) , "utf-8");
				if(j == t-1){
					byte[] buffer = new byte[buffers.length - num*j] ;
					System.arraycopy(buffers, num*j, buffer, 0, buffer.length);
					int forNum = buffer.length %1024 == 0 ? buffer.length /1024 : buffer.length/1024+1;
					for(int i= 0 ; i < forNum  ; i++){
						if(i == buffer.length/1024){
							byte[] bu = new byte[buffer.length-i*1024] ;
							System.arraycopy(buffer, i*1024, bu, 0, bu.length);
							String str = Arrays.toString(bu).replaceAll(", ", " ");
							writer.write(str.substring(1,str.length()-1));
						}else{
							byte[] bu = new byte[1024] ;
							System.arraycopy(buffer, i*1024, bu, 0, bu.length);
							String str = Arrays.toString(bu).replaceAll(", ", " ");
							writer.write(str.substring(1,str.length()-1));
//							writer.write(byte2string(bu));
						}
						writer.write("\r\n");
						writer.flush();
					}
				}else{
					byte[] buffer = new byte[num] ;
					System.arraycopy(buffers, num*j, buffer, 0, num);
					int forNum = buffer.length %1024 == 0 ? buffer.length /1024 : buffer.length/1024+1;
					for(int i= 0 ; i < forNum  ; i++){
						if(i == buffer.length/1024){
							byte[] bu = new byte[buffer.length-i*1024] ;
							System.arraycopy(buffer, i*1024, bu, 0, bu.length);
							String str = Arrays.toString(bu).replaceAll(", ", " ");
							writer.write(str.substring(1,str.length()-1));
						}else{
							byte[] bu = new byte[1024] ;
							System.arraycopy(buffer, i*1024, bu, 0, bu.length);
							String str = Arrays.toString(bu).replaceAll(", ", " ");
							writer.write(str.substring(1,str.length()-1));
//							writer.write(byte2string(bu));
						}
						writer.write("\r\n");
						writer.flush();
					}
				}
				 
				writer.flush();
			}
			
			writer.flush();
		}
		catch(Exception e){}
		test.byte2File(buffers);
		
	
	}
	
	private static String byte2string(byte[] buffer){
		StringBuilder sb = new StringBuilder();
		for(byte b : buffer){
			sb.append(" "+b);
		}
		return sb.toString();
	}
	private void byte2File(byte[] buffer){
		FileOutputStream os = null ; 
		try{
			os = new FileOutputStream(new File("res/copyFile.rar"));
			os.write(buffer);
			os.flush();
		}
		catch(Exception e){}
		finally{
			if(os != null ){
				try {
					os.close() ;
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
	private byte[] file2byte(File file){
		FileInputStream os = null ;
		ByteBuffer buffer = ByteBuffer.allocate(10485760*20) ;
		try{
			
			os = new FileInputStream(file);
			byte[] byBuffer = new byte[1024] ;
			int length = 0 ;
			while((length = os.read(byBuffer)) != -1){
				byte[] putb = new byte[length];
				System.arraycopy(byBuffer, 0, putb, 0, length);
				buffer.put(putb);
			}
			buffer.flip();
			byte[] result =  new byte[buffer.limit()] ;
			System.arraycopy(buffer.array(), 0, result, 0, result.length);
			return result;
		}
		catch(Exception e){
			return new byte[1] ;
		}
		finally{
			if(os!=null){
				try {
					os.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
				
		}
	}
}

 将二进制的文件还原为原文件

package ceshiOA;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class Binarry2File {
	public static void main(String[] args) {
		new Binarry2File().getFiles("res/ProjectFiles/", "res/project.rar");
	}
	
	public void getFiles(String dirs , String saveFile){
		File[] files = new File(dirs).listFiles();
		BufferedReader reader = null ;
		FileOutputStream os = null ;
		
		for(File file : files){
			try {
				os = new FileOutputStream(saveFile,true);
			} catch (FileNotFoundException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			System.out.println(file.getName());
			try{
				reader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"utf-8"));
				String str = null ; 
				while((str = reader.readLine()) != null){
					String[] strs = str.split(" ");
					byte[] buffer =new byte[strs.length];
					for(int i = 0 ; i < strs.length ; i ++){
						buffer[i] = Byte.parseByte(strs[i]);
					}
					System.out.println(str);
					os.write(buffer);
				}
				os.flush();
			}
			catch(Exception e ){
				e.printStackTrace();
			}
			finally{
				if(reader!=null){
					try {
						reader.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
				if(os != null ){
					try {
						os.close();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
		}
		
	}
}

 

分享到:
评论

相关推荐

    QT学习之文件传输和断点续传

    在这个"QT学习之文件传输和断点续传"的主题中,我们将深入探讨如何在QT环境中实现基于TCP的文件传输功能,并且特别关注断点续传技术。 首先,让我们了解TCP(Transmission Control Protocol)协议。TCP是一种面向...

    C# socket TCP 大文件传输同时实现断点续传

    在C#编程语言中,利用Socket API进行TCP通信可以构建高效、稳定的文件传输系统,特别是在处理大文件时,断点续传功能则显得尤为必要。下面,我们将深入探讨如何使用C#的Socket实现TCP大文件传输并支持断点续传。 ...

    很好用的局域网文件传输工具——飞鸽传书

    飞鸽传书是一款在局域网环境中广泛应用的文件传输工具,尤其适合于那些不希望或者无法连接互联网的用户。这款软件以其高效、便捷和安全的特点,赢得了广大用户的喜爱。下面我们将详细探讨飞鸽传书的功能、工作原理...

    使用c语言实现文件传输

    在IT领域,文件传输是一项基本的操作,特别是在网络编程中。本教程将深入探讨如何使用C语言来实现文件传输。C语言是一种底层、高效且灵活的编程语言,非常适合处理这种任务。 首先,我们要理解文件传输的基本原理。...

    MFC socket 文件传输

    标题"“MFC socket 文件传输”"指出,这个项目或教程主要关注如何使用MFC库来构建一个文件传输应用,该应用利用Socket技术进行文件的发送和接收。这通常涉及以下知识点: 1. **MFC基础**:理解MFC框架的基本结构,...

    C# 大文件和多文件传输

    在IT行业中,大文件和多文件传输是一项常见的需求,特别是在网络应用、云存储以及文件共享等领域。本主题将深入探讨如何使用C#语言实现这样的功能,同时关注在传输过程中实现进度条显示、记录上传时间和大小等重要...

    C# Winform 基于局域网文件传输Demo

    在本文中,我们将深入探讨如何使用C# Winform来实现基于局域网的文件传输功能。这个Demo项目主要依赖于TCP(Transmission Control Protocol)协议,它是一种面向连接、可靠的网络通信协议,常用于数据的可靠传输。让...

    net.rar_socket 文件传输_传文件_文件 传_文件传输

    Socket编程在IT行业中是网络通信的基础,特别是在文件传输方面,它扮演着至关重要的角色。本文将深入探讨如何使用Socket进行文件传输,包括服务器向客户端发送文件以及客户端向服务器端发送文件。 首先,让我们理解...

    用于局域网内的C#实现文件传输

    在局域网内实现文件传输是一项常见的需求,尤其是在开发多设备协作或共享资源的应用时。C#作为一种功能强大的编程语言,提供了丰富的库和API来处理网络通信和文件操作,使得在局域网内的文件传输变得相对简单。下面...

    易语言文件传输客户端源码,易语言文件传输服务器源码,易语言大文

    在这个特定的压缩包中,我们拥有的是易语言编写的文件传输客户端和服务器的源码,这对于学习易语言以及网络文件传输技术是非常宝贵的资源。 首先,我们要理解“文件传输”在计算机科学中的基本概念。文件传输是网络...

    用netty实现文件传输

    - **异步处理**:Netty 的非阻塞 I/O 允许在等待文件传输的同时处理其他任务,提高了系统资源利用率。 5. **实例代码** - 服务器端创建 ServerBootstrap,配置 ChannelInitializer 来添加 ChannelHandler,启动...

    VC文件传输-文件传输

    "VC文件传输-文件传输"这个主题涉及到的是使用Visual C++(简称VC)编程语言来设计和实现一个高效、多用户并发的文件传输系统。下面我们将深入探讨这一话题,主要关注服务端和客户端的设计、多线程处理、网络协议...

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

    在Java中实现文件传输功能是一个广泛的话题,涉及到网络编程和数据传输的许多基础知识。本知识点将围绕Java网络编程中的Socket通信和文件传输的实现原理进行详细探讨。 1. Java网络编程基础 Java网络编程提供了两个...

    c++实现文件传输全(1-4)(文件和网页学习)

    本教程涵盖了从基础到高级的文件传输实现,包括TCP协议的使用、多线程技术以及断点续传功能。以下是对每个部分的详细解释: 1. **TCP协议**:TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于...

    文件传输源码 文件传输源码

    4. **断点续传**:如果文件传输过程中网络中断,断点续传功能允许从上次中断的位置继续传输,而不是重新开始。 5. **校验和/哈希值**:为了确保数据的完整性和准确性,会在传输前后计算文件的校验和或哈希值(如MD5...

    基于TCP的文件传输

    QQ的文件传输服务可能包括断点续传功能,即如果在传输过程中因网络问题中断,可以从上次中断的位置继续传输,而不会重新开始。 【TCP与QQ文件传输优化】 为了提高文件传输效率,QQ可能采用了以下优化策略: 1. ...

    TCP文件传输服务器

    在实际应用中,这样的TCP文件传输服务器可能会进一步优化,比如支持断点续传、多线程处理多个客户端请求、加密传输以保护数据安全,或者使用更高级的协议如FTP或HTTP进行文件上传。此外,为了提高性能,还可以考虑...

    Java--文件传输

    在本项目"Java--文件传输"中,我们关注的主要目标是构建一个图形用户界面(GUI)支持的、安全的、可断点续传的文件传输系统。下面将详细讨论这些关键知识点。 首先,**图形用户界面**(GUI)的实现通常依赖于Java的...

    TCP文件传输系统 (多线程,支持断点续传,VC)

    采用Visual C++ 6.0开发的一个TCP文件传输系统,采用多线程的传输方式,支持断点续传,利用配置文件设置基本的初始化信息。 文件包括源代码和安装包,源代码里包括自定义的文件传输通信协议。 程序采用分层的设计...

    C# webservice大文件传输实例源码

    在IT行业中,大文件传输是一项常见的需求,尤其是在网络服务中,如C#的WebService应用。本实例源码提供了一个解决方案,允许用户通过C#编写的WebServcie进行大文件的上传和下载。以下是对这个实例的详细解读: 1. *...

Global site tag (gtag.js) - Google Analytics