`

文件上传实现原理-----文件的复制

阅读更多

在开发中,经常用到的一个文件上传功能,平时在做的时候只是调用了struts2的一个fileupload组件实现了其功能。其实实现的原理很简单,就是一个文件的复制过程。复制分两种方式:

1)、将源文件中的内容全部复制到内存中,并一次性写入到目标文件(如果目标文件不存在,只要给指定其路径,会自动创建文件);

2)、不将源文件中的内容全部读取进来,而是采用边读边写的方式。
第二种方式更适合!

package march;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class MyCopy {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
//		if(args.length!=2){
//			System.out.println("输入的内容不准确!");
//		    System.out.println("例如: java copy 源文件路径 目标文件路径");
//		    System.exit(1);
//		}
		File f1 = new File("C:\\Users\\bin\\Desktop\\爱很简单.mp3");
	    File f2 = new File("C:\\Users\\bin\\Desktop\\爱你不容易.mp3");
	    if(!f1.exists()){
	    	System.out.println("源文件不存在");
	    	System.exit(1);
	    }
	    InputStream input = null;
	    OutputStream out =null;
	    try {
			input = new FileInputStream(f1);
		} catch (Exception e) {
			e.printStackTrace();
		}
		try {
			out = new FileOutputStream(f2);
		} catch (Exception e) {
			e.printStackTrace();
		}
        if(input != null && out != null){
        	int temp =0;
        	try {
				while((temp = input.read())!=-1){
					out.write(temp);
				}
				System.out.println("复制完成!");
			} catch (Exception e) {
				e.printStackTrace();
				System.out.println("复制失败!");
			}
			try {
				input.close();
				out.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
        }
	}
}

 文件上传的实现原理,就是将本地的文件复制到服务器的过程。上面的程序实现了本地复制到本地的过程,如果要实现上传只要把目标路径设置为服务器的路径就可以了。
一般的图片视频等文件都是以字节流传输的,所以要用Fileinputstream和Fileoutputstream。不用字符流filereader和filewriter。

0
6
分享到:
评论

相关推荐

    php多文件上传功能实现原理及代码

    今天对多图片上传功能小小的研究了一下,把下面的代码整理出来,方便以后自己使用以及供大家交流 1、upload.html页面,即先是input type=file的文件: 复制代码 代码如下: <html> <head> <title>&...

    Hadoop原理与技术hdfs命令行基本操作

    (4)上传文件:hdfs dfs -put /本地路径 /hdfs路径 (5)下载文件到本地:hdfs dfs -get /hdfs路径 /本地路径 (6)移动hdfs文件:hdfs dfs -mv /hdfs路径 /hdfs路径 (7)复制hdfs文件:hdfs dfs -cp /...

    java源码包---java 源码 大量 实例

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    文件转换为PDF&HTML;插件—jacob-1.17-M2(支持64位和32位)

    ② 需要把jacob.dll文件复制到JDK的bin目录下面,否则无法调用转换为PDF的功能。 2)使用的服务器上必须安装有office软件,因为原理是调用office的pdf转换器来实现的。 3)必须也要有PDF软件,因为office要通过...

    UPS断电后服务器自动关机工具+源码

    服务器如果经常非法关机则很空易损坏系统,特别是使用软镜像或RAID-5的,...请在源码中\ServerAutoShutDown\bin\Debug,将ServerAutoShutDown.exe复制出来,上传时忘记更新根目录那个文件了,那个是测试来的,关不了机

    入门学习Linux常用必会60个命令实例详解doc/txt

    在前两种格式中,会将<来源>复制至<目的地>或将多个<来源>文件复制至已存在的<目录>,同时设定权限模式及所有者/所属组。在第三种格式中,会创建所有指定的目录及它们的主目录。长选项必须用的参数在使用短选项时也...

    基于 Web 的文件传输网络应用的开发

    1. 基于 Web 服务器的开发基本原理; 2. 掌握 PHP 的文件上传; 3. 根据算法编写与实验内容相关的程序,要求该程序能 Web 服务器上的文 件上传和下载功能; 4. 掌握 HTML 和 PHP 之间的数据传递

    RFC中文文档-txt

    RFC1867 HTML中基于表单的文件上传 RFC1869 SMTP服务扩展 RFC1878 变量长度子网表格用于IPv4 RFC1883 Internet协议,版本6(IPv6)说明书 RFC1901 基于社区的SNMPv2介绍 RFC1904 简单网络管理协议(SNMPv2)版本 2的一致...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...

    极速淘宝店铺宝贝复制专家 v2.2

    极速淘宝店铺宝贝复制专家软件可以下载任意淘宝店的宝贝(包含商城店铺的宝贝),下载制作为淘宝卖家助理的CSV文件,而后您可以导入淘宝助理,可以不用再批改,上传至您自己的店铺。 极速淘宝店铺宝贝复制专家功能: ...

    雨过天晴电脑保护系统

    本软件使用说明: 雨过天晴电脑保护系统是一种强大的电脑系统保护和恢复软件,可以迅速恢复瘫痪的系统到正常工作状态,以清除电脑中存在的软件故障;此外用户还可以在某一具体...我们提供的软件尽量测试后上传的.

    WindowsServer2016系统管理视频教程csdn.txt

    4-8案例2-学生提交作业文件 只允许上传文件 查看自己的文件06:34 4-9案例3-提交的文件不允许再修改或删除10:33 4-10获取所有权 重置文件夹内文件的权限10:19 4-11EFS加密文件系统原理13:59 4-12使用EFS加密文件 导出...

    php+iframe实现隐藏无刷新上传文件

    首先ajax不能上传文件,这误导了我有段时间,今晚睡不着就照着说明做了个无刷新上传文件 其实原理很简单 复制代码 代码如下: <form enctype=”multipart/form-data” method=”POST” target=”upload” action=...

    jQuery权威指南-源代码

    7.10 综合案例分析—使用uploadify插件实现文件上传功能 /232 7.10.1 需求分析/232 7.10.2 效果界面/233 7.10.3 功能实现/234 7.10.4 代码分析/236 7.11 本章小结/241 第8章 jQuery UI插件/242 8.1 认识...

    图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传

    图片文件上传也需要:选择路径再->上传->插入,步骤繁杂,互联网体验为王,如果支持截图粘贴上传、拖拽上传将大大提升体验。 当前知乎和github对现代浏览器均支持这两种特性,闲来无事就学习实现了一下,今天就说一...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    海定文件加解密 v1.3.zip

    文件数据加密优点:安全性高,破解的前提是需要知道加密算法,这个大家可以放心,非常非常难,而且可以移动,复制,删除,随时随地解密,类似压缩文件一样,加密的文件也可以移动到其他电脑进行解密或上传发送。...

    js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)

    我们或多或少都使用过各式各样的富文本编辑器,其中有一个很方便功能,复制一张图片然后粘贴进文本框,这张图片就被上传了,那么这个方便的功能是如何实现的呢? 原理分析 提取操作:复制=>粘贴=>上传 在这个操作...

    软件破解机

    软件出现“无法安装这个硬件”“INF中的服务安装段落无效”问题的解决办法 mdmcpq.inf usbser.sys 将mdmcpq.inf复制到c:\windows\inf 将usbser.sys复制到c:\windows\system32\...我们提供的软件尽量测试后上传的.

Global site tag (gtag.js) - Google Analytics