将文件转换为二进制的文件,并将二进制写进文件
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环境中实现基于TCP的文件传输功能,并且特别关注断点续传技术。 首先,让我们了解TCP(Transmission Control Protocol)协议。TCP是一种面向...
在这个特定的压缩包中,我们拥有的是易语言编写的文件传输客户端和服务器的源码,这对于学习易语言以及网络文件传输技术是非常宝贵的资源。 首先,我们要理解“文件传输”在计算机科学中的基本概念。文件传输是网络...
在C#编程语言中,利用Socket API进行TCP通信可以构建高效、稳定的文件传输系统,特别是在处理大文件时,断点续传功能则显得尤为必要。下面,我们将深入探讨如何使用C#的Socket实现TCP大文件传输并支持断点续传。 ...
飞鸽传书是一款在局域网环境中广泛应用的文件传输工具,尤其适合于那些不希望或者无法连接互联网的用户。这款软件以其高效、便捷和安全的特点,赢得了广大用户的喜爱。下面我们将详细探讨飞鸽传书的功能、工作原理...
在IT领域,文件传输是一项基本的操作,特别是在网络编程中。本教程将深入探讨如何使用C语言来实现文件传输。C语言是一种底层、高效且灵活的编程语言,非常适合处理这种任务。 首先,我们要理解文件传输的基本原理。...
标题"“MFC socket 文件传输”"指出,这个项目或教程主要关注如何使用MFC库来构建一个文件传输应用,该应用利用Socket技术进行文件的发送和接收。这通常涉及以下知识点: 1. **MFC基础**:理解MFC框架的基本结构,...
在IT行业中,大文件和多文件传输是一项常见的需求,特别是在网络应用、云存储以及文件共享等领域。本主题将深入探讨如何使用C#语言实现这样的功能,同时关注在传输过程中实现进度条显示、记录上传时间和大小等重要...
在本文中,我们将深入探讨如何使用C# Winform来实现基于局域网的文件传输功能。这个Demo项目主要依赖于TCP(Transmission Control Protocol)协议,它是一种面向连接、可靠的网络通信协议,常用于数据的可靠传输。让...
- **异步处理**:Netty 的非阻塞 I/O 允许在等待文件传输的同时处理其他任务,提高了系统资源利用率。 5. **实例代码** - 服务器端创建 ServerBootstrap,配置 ChannelInitializer 来添加 ChannelHandler,启动...
Socket编程在IT行业中是网络通信的基础,特别是在文件传输方面,它扮演着至关重要的角色。本文将深入探讨如何使用Socket进行文件传输,包括服务器向客户端发送文件以及客户端向服务器端发送文件。 首先,让我们理解...
"VC文件传输-文件传输"这个主题涉及到的是使用Visual C++(简称VC)编程语言来设计和实现一个高效、多用户并发的文件传输系统。下面我们将深入探讨这一话题,主要关注服务端和客户端的设计、多线程处理、网络协议...
在局域网内实现文件传输是一项常见的需求,尤其是在开发多设备协作或共享资源的应用时。C#作为一种功能强大的编程语言,提供了丰富的库和API来处理网络通信和文件操作,使得在局域网内的文件传输变得相对简单。下面...
在Java中实现文件传输功能是一个广泛的话题,涉及到网络编程和数据传输的许多基础知识。本知识点将围绕Java网络编程中的Socket通信和文件传输的实现原理进行详细探讨。 1. Java网络编程基础 Java网络编程提供了两个...
本教程涵盖了从基础到高级的文件传输实现,包括TCP协议的使用、多线程技术以及断点续传功能。以下是对每个部分的详细解释: 1. **TCP协议**:TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于...
本案例中,我们关注的是如何利用MFC来实现局域网内的大文件传输功能。这一技术对于开发文件共享软件、网络协作工具或者任何需要在本地网络中交换大量数据的应用来说至关重要。 文件传输通常涉及以下核心组件: 1. ...
4. **断点续传**:如果文件传输过程中网络中断,断点续传功能允许从上次中断的位置继续传输,而不是重新开始。 5. **校验和/哈希值**:为了确保数据的完整性和准确性,会在传输前后计算文件的校验和或哈希值(如MD5...
点对点文件传输是一种在两台或多台计算机之间直接交换数据的方法,无需通过中央服务器作为中介。在C#中实现点对点文件传输涉及到网络编程和流处理等核心概念。以下将详细介绍整个实现过程。 首先,为了建立点对点...
QQ的文件传输服务可能包括断点续传功能,即如果在传输过程中因网络问题中断,可以从上次中断的位置继续传输,而不会重新开始。 【TCP与QQ文件传输优化】 为了提高文件传输效率,QQ可能采用了以下优化策略: 1. ...
在实际应用中,这样的TCP文件传输服务器可能会进一步优化,比如支持断点续传、多线程处理多个客户端请求、加密传输以保护数据安全,或者使用更高级的协议如FTP或HTTP进行文件上传。此外,为了提高性能,还可以考虑...
在本项目"Java--文件传输"中,我们关注的主要目标是构建一个图形用户界面(GUI)支持的、安全的、可断点续传的文件传输系统。下面将详细讨论这些关键知识点。 首先,**图形用户界面**(GUI)的实现通常依赖于Java的...