我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java怎么从本地文件复制到网络文件上传

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java怎么从本地文件复制到网络文件上传

今天小编给大家分享一下Java怎么从本地文件复制到网络文件上传的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    文件复制

    文件复制: 将一个本地文件从一个目录,复制到另一个目录。(通过本地文件系统)

    主要代码
    package dragon;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class FileCopy {public FileCopy() {}public void fileCopy(String target, String output) throws IOException {File targetFile = new File(target);File outputPath = new File(output);this.init(targetFile, outputPath);try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(targetFile));                //创建输出文件BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(outputPath, "copy"+targetFile.getName())))){int hasRead = 0;byte[] b = new byte[1024];while ((hasRead = bis.read(b)) != -1) {bos.write(b, 0, hasRead);}}System.out.println("文件复制成功");}//数据校验及初始化工作private void init(File targetFile, File outputPath) throws FileNotFoundException {if (!targetFile.exists()) {throw new FileNotFoundException("目标文件不存在:"+targetFile.getAbsolutePath());} else {if (!targetFile.isFile()) {throw new FileNotFoundException("目标文件是一个目录:"+targetFile.getAbsolutePath());}}if (!outputPath.exists()) {if (!outputPath.mkdirs()) {   throw new FileNotFoundException("无法创建输出路径:"+outputPath.getAbsolutePath());}} else {if (!outputPath.isDirectory()) {throw new FileNotFoundException("输出路径不是一个目录:"+outputPath.getAbsolutePath());}}}}
    测试类
    package dragon;import java.io.IOException;public class FileCopyTest {public static void main(String[] args) throws IOException {String target = "D:/DB/BuilderPattern.png";String output = "D:/DBC/dragon/";FileCopy copy = new FileCopy();copy.fileCopy(target, output);}}
    执行结果

    注意:右边文件是复制的结果,左边的不是。(下面会提到!)

    Java怎么从本地文件复制到网络文件上传

    说明

    上面的代码只是将一个本地文件从一个目录,复制到另一个目录,还是比较简单的,这只是一个原理性的代码,来说明输入输出流的应用。将文件从一个地方复制到另一个地方。

    网络文件传输(TCP)

    **网络文件传输(TCP):**使用套接字(TCP)进行演示,文件从一个地方复制到另一个地方。(通过网络的方式。)

    主要代码

    Server

    import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;public class Server {public static void main(String[] args) throws IOException {try (ServerSocket server = new ServerSocket(8080)){Socket client = server.accept();//开始读取文件try (BufferedInputStream bis = new BufferedInputStream(client.getInputStream());BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File("D:/DBC/dragon", System.currentTimeMillis()+".jpg")))){int hasRead = 0;byte[] b = new byte[1024];while ((hasRead = bis.read(b)) != -1) {bos.write(b, 0, hasRead);}}System.out.println("文件上传成功。");}}}

    Client

    import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.net.Socket;import java.net.UnknownHostException;public class Client {public static void main(String[] args) throws UnknownHostException, IOException {try (Socket client = new Socket("127.0.0.1", 8080)){File file = new File("D:/DB/netFile/001.jpg");//开始写入文件try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));BufferedOutputStream bos = new BufferedOutputStream(client.getOutputStream())){int hasRead = 0;byte[] b = new byte[1024];while ((hasRead = bis.read(b)) != -1) {bos.write(b, 0, hasRead);}}}}}
    执行效果

    执行程序

    Java怎么从本地文件复制到网络文件上传

    注意:这个上传文件的目录和本地文件复制是在同一个目录,但是使用的方式不一样,文件的命名方式不一样,使用的是当前的毫秒数。 复制前文件

    Java怎么从本地文件复制到网络文件上传

    复制后文件

    Java怎么从本地文件复制到网络文件上传

    说明

    通过网络的方式使用流,使用传输层的TCP协议,绑定了 8080 端口,这里需要一些网络的知识,不过都是最基本的知识。可以看出来,上面这个 Server端和 Client端的代码很简单,甚至都没有实现传输文件的后缀名!(哈哈,其实是我对套接字编程不太熟悉,传输文件名的话,我一开始尝试,但是没有成功。不过这个不影响这个例子,套接字我会抽时间来看的。哈!) 注意这里我要表达的意思通过网络将文件从一个地方复制到另一个地方。(使用较为的是传输层的协议)

    网络文件传输(HTTP)

    HTTP 是建立在 TCP/IP 协议之上的应用层协议,传输层协议使用起来感觉还是比较麻烦的,不如应用层协议用起来方便。

    网络文件传输(HTTP): 这里使用 Servlet(3.0以上)(JSP)技术来举例,就以我们最常使用的文件上传为例。

    使用 HTTP 协议将文件从一个地方复制到另一个地方。

    使用 apache 组件实现文件上传

    注意:因为原始的通过 Servlet 上传文件较为麻烦,现在都是使用一些组件来达成这个文件上传的功能的。(我没有找到文件上传最原始的写法,想必应该是很繁琐的吧!) 这里使用两个jar包:

    • commons-fileupload-1.4.jar

    • commons-io-2.6.jar

    注意:在 apache 网站可以下载到。

    上传文件的 Servlet

    package com.study;import java.io.File;import java.io.IOException;import java.util.Iterator;import java.util.List;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileItemFactory;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;@WebServlet("/UploadServlet")public class UploadServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//如果不是文件上传的话,直接不处理,这样比较省事if (ServletFileUpload.isMultipartContent(request)) {//获取(或者创建)上传文件的路径String path = request.getServletContext().getRealPath("/image");File uploadPath = new File(path);if (!uploadPath.exists()) {uploadPath.mkdir();}FileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);List<FileItem> items;try {items = upload.parseRequest(request);Iterator<FileItem> it = items.iterator();while (it.hasNext()) {FileItem item = it.next();//处理上传文件if (!item.isFormField()) {String filename = new File(item.getName()).getName();System.out.println(filename);File file = new File(uploadPath, filename);item.write(file);response.sendRedirect("success.jsp");}}} catch (Exception e) {e.printStackTrace();}}}}

    上传文件的jsp中,只需要一个form表单即可。

    <h2>文件上传</h2><form action="NewUpload" method="post"  enctype="multipart/form-data">    <input type="file" name="image">    <input type="submit" value="上传"></form>

    运行效果

    说明

    虽然这样处理对于上传文件很好,但是因为使用的都是较为成熟的技术,对于想了解输入输出流的我们来说,就不是那么好了。从这个例子中,基本上看不到输入输出流的用法了,都被封装起来了。

    使用 Servlet 3.0 以后的新技术实现文件上传

    package com.study;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.util.UUID;import javax.servlet.ServletException;import javax.servlet.annotation.MultipartConfig;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.Part;@MultipartConfig@WebServlet("/FileUpload")public class FileUpload extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {Part part = request.getPart("image");String header = part.getHeader("Content-Disposition");System.out.println(header);String filename = header.substring(header.lastIndexOf("filename=\"")+10, header.lastIndexOf("\""));String fileSuffix = filename.lastIndexOf(".") != -1 ? filename.substring(filename.lastIndexOf(".")) : "";String uploadPath = request.getServletContext().getRealPath("/image");File path = new File(uploadPath);if (!path.exists()) {path.mkdir();}filename = UUID.randomUUID()+fileSuffix;try (BufferedInputStream bis = new BufferedInputStream(part.getInputStream());BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(path, filename)))){int hasRead = 0;byte[] b = new byte[1024];while ((hasRead = bis.read(b)) != -1) {bos.write(b, 0, hasRead);}}response.sendRedirect("success.jsp");}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

    使用 Servlet 3.0 的新特性实现,这里使用了 @MultipartConfig注解。(如果不使用这个注解,会无法正常工作!感兴趣的,可以多去了解一下。)

    注意:下面这段代码,这里我舍近求远了,但是这正是我想要看到的。同样是输入输出流,注意这个和上面的几个例子进行对比。

    try (BufferedInputStream bis = new BufferedInputStream(part.getInputStream());BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(path, filename)))){int hasRead = 0;byte[] b = new byte[1024];while ((hasRead = bis.read(b)) != -1) {bos.write(b, 0, hasRead);}}

    不使用 apache 组件的更为简单的方式是下面这种:

    package com.study;import java.io.File;import java.io.IOException;import java.util.UUID;import javax.servlet.ServletException;import javax.servlet.annotation.MultipartConfig;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.Part;@MultipartConfig@WebServlet("/NewUpload")public class NewUpload extends HttpServlet {private static final long serialVersionUID = 1L;protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {Part part = request.getPart("image");String header = part.getHeader("Content-Disposition");System.out.println(header);String filename = header.substring(header.lastIndexOf("filename=\"")+10, header.lastIndexOf("\""));String fileSuffix = filename.lastIndexOf(".") != -1 ? filename.substring(filename.lastIndexOf(".")) : "";String uploadPath = request.getServletContext().getRealPath("/image");File path = new File(uploadPath);if (!path.exists()) {path.mkdir();}filename = uploadPath+File.separator+System.currentTimeMillis()+UUID.randomUUID().toString()+fileSuffix;part.write(filename);response.sendRedirect("success.jsp");}}

    真正写入文件的只有这一步了,前面全是处理文件名和上传文件路径相关的代码。使用 HTTP 的这三种方式都有处理文件名和上传文件路径这段代码。

    如果通过这段代码,那就更看不出什么东西来了,只知道这样做,一个文件就会被写入相应的路径。

    part.write(filename);

    以上就是“Java怎么从本地文件复制到网络文件上传”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Java怎么从本地文件复制到网络文件上传

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    Java怎么从本地文件复制到网络文件上传

    今天小编给大家分享一下Java怎么从本地文件复制到网络文件上传的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。文件复制文件复制
    2023-07-06

    关于Java从本地文件复制到网络文件上传

    这篇文章主要介绍了关于Java从本地文件复制到网络文件上传,File 和 IO 流其实是很相似的,都是将文件从一个地方转移到另一个地方,这也是流的特点之一,需要的朋友可以参考下
    2023-05-15

    java怎么把文本文件上传到sql

    将文本文件上传到SQL数据库通过Java编程语言,可以将文本文件上传到SQL数据库。该指南逐步说明如何:加载JDBC驱动建立数据库连接准备SQL语句创建Statement对象执行SQL语句检查受影响的行数关闭数据库连接示例代码和注意事项提供了更深入的见解。此方法支持数据导入、维护和分析。通过遵循这些步骤,您可以有效地将文本文件上传到SQL数据库。
    java怎么把文本文件上传到sql
    2024-04-10

    java怎么把文本文件上传到sql

    可以使用Java的JDBC库来连接到SQL数据库,并执行相应的SQL语句来上传文本文件。以下是一个示例代码:```javaimport java.io.BufferedReader;import java.io.FileReader;imp
    2023-08-25

    怎么把本地文件复制到vps

    有多种方法可以将本地文件复制到VPS上,以下是其中一种常用的方法:1. 使用SCP(Secure Copy)命令:SCP是一个安全的文件传输协议,可以通过SSH进行文件传输。- 打开终端或命令提示符,输入以下命令:```scp /本地文件路
    2023-08-19

    本地文件怎么上传到云服务器

    本地文件上传到云服务器的步骤准备工作:创建云服务器并获取登录信息安装SSH客户端文件上传:使用SCP命令:语法:scp[本地文件路径][用户名]@[云服务器IP地址]::[远程文件路径]使用WinSCP(Windows):可视化界面,拖放文件使用SFTP(Mac):sftp://[云服务器IP地址],拖放文件故障排除:检查IP和登录凭证验证防火墙设置检查磁盘空间最佳实践:使用安全连接(SSH)使用应用程序特定工具定期备份使用版本控制系统限制文件访问权限
    本地文件怎么上传到云服务器
    2024-04-10

    本地文件怎么上传到云服务器

    要将本地文件上传到云服务器,你可以使用以下方法之一:1. 使用SSH命令行工具:在本地计算机上打开终端或命令提示符,然后使用SCP(Secure Copy)命令将文件从本地复制到云服务器。例如,使用以下命令将本地文件`localfile.t
    2023-09-27

    怎么把本地文件上传到云主机

    要将本地文件上传到云主机,可以使用以下方法之一:1. 使用FTP客户端:安装一个FTP客户端程序(如FileZilla),打开该程序并连接到云主机的IP地址和FTP账号信息。然后,将本地文件从计算机的文件夹拖放到云主机的文件夹中。2. 使用
    2023-08-19

    本地文件怎么传到云服务器上

    本地文件上传到云服务器的步骤:选择文件传输协议(FTP、SFTP、SCP)。建立与云服务器的连接,提供服务器地址、端口、用户名和密码。使用FTP或SFTP客户端或SCP命令行工具上传文件。验证上传的完整性,使用远程文件系统或SSH命令。采用安全协议、限制访问权限、定期备份和使用自动化工具优化传输过程。
    本地文件怎么传到云服务器上
    2024-04-12

    本地文件怎么传到云服务器上

    将本地文件传输到云服务器上有多种方法,下面列举两种常见的方法:1. 使用SCP(Secure Copy)命令:SCP是一种通过加密的方式在本地和远程服务器之间传输文件的方法。在本地终端输入以下命令:```scp /path/to/local
    2023-09-27

    怎么把本地文件上传到虚拟主机

    要将本地文件上传到虚拟主机,可以按照以下步骤进行操作:1. 选择一个FTP工具:FTP(文件传输协议)是一种常用的文件传输协议,可以使用各种FTP客户端工具来上传文件。一些常见的FTP工具包括FileZilla、WinSCP等。选择一个你喜
    2023-08-23

    怎么在gitee中上传本地文件

    随着互联网技术的不断进步,人们对代码托管平台的需求也越来越高。Gitee是国内一款非常优秀的代码托管平台,它可以免费提供Git 和 SVN 代码托管服务,同时还提供了在线代码编辑器、团队协作、webhooks 等功能。 本篇文章将为大家详细
    2023-10-22

    java怎么实现上传文件到FTP

    这篇“java怎么实现上传文件到FTP”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java怎么实现上传文件到FTP”文章吧
    2023-07-02

    怎么从云服务器导文件到本地

    要将文件从云服务器导到本地,你可以使用以下几种方法:1. 使用FTP(文件传输协议):在云服务器上安装一个FTP服务器,并配置好访问权限和账户密码。然后在本地使用FTP客户端连接到服务器,并使用命令下载文件到本地。2. 使用SCP(Secu
    2023-09-26

    怎么从云服务器导文件到本地

    从云服务器导文件到本地的方法利用FTP、SFTP、rsync、scp或Web界面从云服务器安全高效地下载文件。您还可通过API以编程方式传输数据。
    怎么从云服务器导文件到本地
    2024-04-12

    腾讯云服务器复制文件到本地电脑上

    如果您的云服务器上复制了一个文件到您的本地电脑上,那么您需要对该文件进行一些权限设置。以下是一些可能有用的设置选项:确认要复制的文件类型,以及文件格式。如果您想复制文件到文本文件,可以将文件复制到文本文件;如果您想复制文件到图片,可以将文件复制到图片文件夹中。您需要确定要复制的文件类型,并使用相应的格式进行复制。确认要复制的文件权限,并确保所有要复制的文件在您的设备上都是可见的。在云存储中,您需要将文件复制...
    2023-10-27

    腾讯云服务器复制文件到本地电脑上怎么操作

    一、如何在腾讯云服务器上复制文件打开腾讯云客户端在电脑上安装腾讯云客户端,并登录到您的账号。在主界面上可以看到“文件管理”和“文件复制”两个按钮。点击“文件复制”按钮,可以将要复制的文件上传到服务器。在复制完成后,点击“文件管理”按钮,可以查看文件的复制状态。选择文件在上一步中,您已经将要复制的文件上传到了服务器。现在
    腾讯云服务器复制文件到本地电脑上怎么操作
    2023-10-28

    Java网络编程TCP怎么实现文件上传功能

    这篇文章给大家分享的是有关Java网络编程TCP怎么实现文件上传功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下客户端:package com.kuang.lesson02;import java.
    2023-06-20

    怎么在Linux上复制文件/文件夹到远程系统

    这篇文章将为大家详细讲解有关怎么在Linux上复制文件/文件夹到远程系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。从一个服务器复制文件到另一个服务器,或者从本地到远程复制是 Linux 管理员的日常任
    2023-06-16

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录