`
dwj147258
  • 浏览: 187788 次
  • 性别: 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();
					}
				}
			}
		}
		
	}
}

 

分享到:
评论

相关推荐

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

    如何利用 Java 实现 QQ 文件传输功能 现在, 通过网络传输文件已经非常普遍, 各种传输工 具也很多, 最具有代表性的就是 QQ 提供的文件传输功能了, 它能让好友之间方便的把自己的文件传给对方。 仔细查看 QQ 的...

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

    在QT上开发的文件传输工具,利用TCP实现文件传输,支持断点续传操作。

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

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

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

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

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

    Socket进行文件传输的例子 服务器先向客户端传文件 客户端也可向服务器端传文件

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

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

    基于openssl的ftp文件传输系统源码.zip

    基于openssl的ftp文件传输系统源码基于openssl的ftp文件传输系统源码基于openssl的ftp文件传输系统源码基于openssl的ftp文件传输系统源码基于openssl的ftp文件传输系统源码基于openssl的ftp文件传输系统源码基于...

    java毕业设计——java文件传输系统的设计与实现(论文+源代码).zip

    java毕业设计——java文件传输系统的设计与实现(论文+源代码).zip java毕业设计——java文件传输系统的设计与实现(论文+源代码).zip java毕业设计——java文件传输系统的设计与实现(论文+源代码).zip java毕业设计...

    Socket文件传输源码

    1服务端接收文件,客户端发送文件。 2 每个Socket连接同时只能够传输一个文件。 3 可同时发送网络消息 网络消息的消息格式为: @+nnnnn+消息内容,其中@为消息头,nnnnn为消息...-24 -24 接收方出错,文件传输被取消

    UDP文件传输.rar

    UDP文件传输.rar UDP文件传输.rar UDP文件传输.rar UDP文件传输.rar UDP文件传输.rar UDP文件传输.rar

    基于java的p2p文件传输代码.rar

    基于java的p2p文件传输代码.rar基于java的p2p文件传输代码.rar基于java的p2p文件传输代码.rar基于java的p2p文件传输代码.rar基于java的p2p文件传输代码.rar基于java的p2p文件传输代码.rar基于java的p2p文件传输代码....

    MFC socket 文件传输

    c++编写的 MFC socket 文件传输 编译通过 可直接运行

    C#实现HTTP协议下的多线程文件传输

    很多人都有过使用网络蚂蚁或网络快车软件下载互联网文件的经历,这些软件的使用可以大大加速互联网上文件的传输速度,减少文件传输的时间。这些软件为什么有如此大的魔力呢?其主要原因是这些软件都采用了多线程下载...

    C# 大文件和多文件传输

    实现大文件多文件传输,带进度条,上传时间 大小的记录

    B/S模式文件传输平台架构设计

    通过采用多层架构设计的B/S模式文件传输平台,建立具有高内聚、低耦合、易扩展的特性。平台实现了文件发送、文件接收、监控管理、查询统计、系统管理等功能,能够支持FTP、消息中间件、邮件等多种传输方式,并可根据...

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

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

    通过IO流把文件传到前端并下载.zip

    通过IO流把文件传到前端并下载

    delphi大文件传输

    1、学习InIOCP开源组件开发的一个简单文件上传例子,支持大文件传输(测试过10.6G文件传输) 2、服务端最小化到托盘,便于7*24小时运行 3、编译本程序需要先安装InIOCP开源组件 4、InIOCP开源组件

    JAVA文件传输(论文+源代码).rar

    JAVA文件传输(论文+源代码) JAVA文件传输(论文+源代码) JAVA文件...JAVA文件传输(论文+源代码) JAVA文件传输(论文+源代码) JAVA文件传输(论文+源代码) JAVA文件传输(论文+源代码) JAVA文件传输(论文+源代码) JAVA文件传

    C# WPF内网文件传输.zip

    C# 内网文件传输,适合有一定C#基础的人

Global site tag (gtag.js) - Google Analytics