精华内容
下载资源
问答
  • 2016-05-03 09:38:49
    书读的少文笔不好,废话就不多说了。(首次发文,如有不对或是代码有漏洞,请及时指出,万分感谢)!!!
    书读的少文笔不好,废话就不多说了。(首次发文,如有不对或是代码有漏洞,请及时指出,万分感谢)!!!
    书读的少文笔不好,废话就不多说了。(首次发文,如有不对或是代码有漏洞,请及时指出,万分感谢)!!!
    </pre><span style="color:#000000;"></span><pre class="java" name="code"><span id="_xhe_cursor">
    </span>
    <span>
    </span>
    <span>//服务器发送端 (注:服务器的环境都是windows Server+tomcat7)</span>
    <pre class="java" name="code"><span style="font-size:14px;color:#333333;">package com.xxx.util;
    
    import org.apache.log4j.Logger;
    
    import java.io.ByteArrayOutputStream;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    public class FileUtil {
    	/**
    	 * Logger for this class
    	 */
    	private static final Logger logger = Logger.getLogger(FileUtil.class);
    
    	/**
    	 * 将文件流发送至另外服务器的方法(这里有个fileName
    	 * 本来是想将文件名放在流里面一起带过去的后来出现问题,如果有朋友知道在这种方法里面怎么把fileName 传过去,麻烦告知一下,万分感谢)
    	 * 
    	 * @param bytes
    	 * @param fileName
    	 * @return 从服务器端 响应的流 可通过 new String(bytes); 转换
    	 */
    	public byte[] httpPost(byte[] bytes, String fileName) {
    		try {
    			String url = "";
    			URL console = new URL(url);
    			HttpURLConnection conn = (HttpURLConnection) console
    					.openConnection();
    			conn.setConnectTimeout(30000);
    			conn.setReadTimeout(30000);
    			conn.setUseCaches(false);
    			conn.setDoOutput(true);
    			conn.setDoInput(true);
    			conn.setRequestMethod("POST");
    			conn.connect();
    			DataOutputStream out = new DataOutputStream(conn.getOutputStream());
    			out.write(bytes);
    			// 刷新、关闭
    			out.flush();
    			out.close();
    			InputStream is = conn.getInputStream();
    			if (is != null) {
    				ByteArrayOutputStream outStream = new ByteArrayOutputStream();
    				byte[] buffer = new byte[1024];
    				int len = 0;
    				while ((len = is.read(buffer)) != -1) {
    					outStream.write(buffer, 0, len);
    				}
    				is.close();
    				return outStream.toByteArray();
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    			logger.info("文件发送失败++++++++++++++++++++++++++");
    		}
    		return null;
    	}
    
    	/**
    	 * 将文件转换成byte[]
    	 * 
    	 * @param filePath
    	 * @return
    	 */
    	public byte[] getBytes(String filePath) {
    		byte[] buffer = null;
    		try {
    			File file = new File(filePath);
    			FileInputStream fis = new FileInputStream(file);
    			ByteArrayOutputStream bos = new ByteArrayOutputStream(1024);
    			byte[] b = new byte[1024];
    			int n;
    			while ((n = fis.read(b)) != -1) {
    				bos.write(b, 0, n);
    			}
    			fis.close();
    			bos.close();
    			buffer = bos.toByteArray();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return buffer;
    	}
    
    	public static void main(String[] args) {
    		String filePath="d:/demo/demo.zip";
    		FileUtil fileUtil=new FileUtil();
    		byte[] bytes = fileUtil.getBytes(filePath);
    		fileUtil.httpPost(bytes, filePath);
    	}
    
    }</span>
    </pre><pre class="java" name="code">
    //服务器接收端
    <pre class="java" name="code"><span style="font-size:14px;color:#666666;">package com.xxx.util;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.UUID;
    
    import javax.servlet.ServletException;
    import javax.servlet.ServletInputStream;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.log4j.Logger;
    
    public class FileReceiveServlet extends HttpServlet{
    	/**
    	 * Logger for this class
    	 */
    	private static final Logger logger = Logger.getLogger(FileReceiveServlet.class);
    	private static final long serialVersionUID = 1L;
    	
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		doPost(req, resp);
    	}
    	
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		fileReceive(req,resp);
    	}
    
    	private void fileReceive(HttpServletRequest req, HttpServletResponse resp) {
    		logger.info("接收文件+++++++++++++++++++");
    		try {
    			//由于此处文件名称没有带过来,只能自己重新定义文件名称
    			String fileName = "d:/airpxml/"+UUID.randomUUID().toString()+".zip";
    			ServletInputStream in = req.getInputStream();
    			File f = new File(fileName);
    			FileOutputStream fos = new FileOutputStream(f);
    			byte[] b = new byte[1024];
    			int n=0;
    			while((n=in.read(b))!=-1){
    				fos.write(b,0,n);
    			}
    			fos.close();
    			in.close();
    		} catch (Exception e) {
    			logger.info("接收失败+++++++++++++++++"+e.getMessage());
    			e.printStackTrace();
    		}
    		
    	}
    	
    	
    }
    </span>

     
      
     
     
     
    </pre><pre class="java" name="code">
    更多相关内容
  • NULL 博文链接:https://wyp0523.iteye.com/blog/721591
  • 主要介绍了java实现两台服务器文件复制的方法,是对单台服务器上文件复制功能的升级与改进,具有一定参考借鉴价值,需要的朋友可以参考下
  • Java两台电脑之间传输文件

    千次阅读 2021-08-18 14:40:57
    讲解一下两台电脑之间通过java代码传输视频文件(在有网络的情况下),我通过TCP协议来完成操作 ,TCP协议要明确哪一台电脑是服务端,哪一台是客户端,服务端负责发送数据,客户端负责接收数据。 一.我首先说...

    开发工具与关键技术:IDEA  Java

    撰写时间:2021/8/10  

    讲解一下两台电脑之间通过java代码传输视频文件(在有网络的情况下),我通过TCP协议来完成操作 ,TCP协议要明确哪一台电脑是服务端,哪一台是客户端,服务端负责发送数据,客户端负责接收数据。

    一.我首先说客户端的代码怎么写代码图如下

    public class ClientDome {
        public static void main(String[] args) throws
                IOException {
            //这里是客户端
            Socket s = new Socket("127.0.0.1", 10001);
            //使用字节缓冲流接收数据
            //服务器输出数据 ,客户端接收数据保存到数据库中
            BufferedInputStream bis=new BufferedInputStream(s.getInputStream());
    
            BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("shiping.mp4"));
    
            byte[] bytes=new byte[8192];
            int len;
           while ((len=bis.read(bytes))!=-1){
               bos.write(bytes,0,len);
               bos.flush();
           }
           BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
           //输出 反馈给服务器
            bw.write("我已接收到视频文件");
            bw.flush();
            bos.close();
            s.close();
        }
    }

    首先我定义了一个Socket类传入两个参数明确服务端的IP地址和端口,然后使用字节缓冲流接收数据,然后把数据读取到当前项目中,所以路径前缀我不需要写了,使用一个字节一个字节数组的方法读取数据,读取完数据以后,要将信息反馈给服务器,表示已经读取完数据,最后关闭流释放资源。

    • 我再来说一下服务端的代码怎么写如图下所示,首先我实例化了ServerSocket类,使用有参构造方法,参数是端点,然后我用这个类的实例化对象ss去调用监听方accept返回
    public class ServerDome {
        public static void main(String[] args) throws
                IOException {
            //服务器接收数据
            ServerSocket ss=new ServerSocket(10001);
            Socket s=ss.accept();
           //读取视频文件  读取 当前类文件路径下的视频文件
            BufferedInputStream bis=new BufferedInputStream
                    (ServerDome.class.getClassLoader().getResourceAsStream("Cyberpunk 2077.mp4"));
            BufferedOutputStream bos=new BufferedOutputStream(s.getOutputStream());
            byte[] bytes=new byte[8192];
            int len;
            while ((len=bis.read(bytes))!=-1){
                bos.write(bytes,0,len);
                bos.flush();
            }
            s.shutdownOutput();
            BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
            //输出 数据
            System.out.println("客户端:"+br.readLine());
            bis.close();
            s.close();
        }
    }

    一个Socket对象用s声明该返回值,然后首先我用字节缓冲输入流读取到当前这个测试类的根文件路径下的视频文件,读取的同时用字节缓冲输出输出数据给客户端,输出完毕之后一定要用 s调用 shutdownOutput()方法,关闭TCP套接字字符输出流,如果不关闭这里一直会等待数据读取然后输出,然后客户端一边也会一直在等待接收数据,然后就卡在这里了。

    最后接收客户端的反馈输出到控制台中,并且关闭流和服务端,释放资源。

    最后我在我自己的电脑上给自己的传输文件,在同一台电脑上执行这个操作,首先打服务端,然后再打开客户端。结果如下

     

    如果你想尝试一下传输文件最好拉上自己的好友一起尝试。

    展开全文
  • 通过ftp连接ftp服务器,通过sftp连接另外一台服务器,实现文件拷贝。 1、连接ftp /** * 连接FTP */ public void connect(String host, int port, String user, String pwd) { FTPClient client = new ...


    前言

    通过ftp连接ftp服务器,通过sftp连接另外一台服务器,实现文件拷贝。


    1、连接ftp

    /**
         * 连接FTP
         */
        public void connect(String host, int port, String user, String pwd) {
            FTPClient client = new FTPClient();
            try {
                // 连接
                client.connect(host, port);
                // 登陆
                if (user == null || "".equals(user)) {
                    client.login("anonymous", "anonymous");
                } else {
                    client.login(user, pwd);
                }
                // 二进制文件支持
                client.setFileType(FTPClient.BINARY_FILE_TYPE);
                // 获取FTP应答
                int reply = client.getReplyCode();
                if (!FTPReply.isPositiveCompletion(reply)) {
                    client.disconnect();
                    return;
                }
                FTPClientConfig config = new FTPClientConfig(client.getSystemType().split(" ")[0]);
                client.configure(config);
                client.setBufferSize(1024);
                client.enterLocalPassiveMode();
                client.setControlEncoding("utf-8");
                this.client = client;
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    

    2、连接sftp

    /**
         * 连接sftp服务器
         *
         * @param host     主机
         * @param port     端口
         * @param username 用户名
         * @param password 密码
         */
        public void sessionConnect(String host, int port, String username, String password) {
            try {
                this.jsch = new JSch();
                this.sshSession = jsch.getSession(username, host, port);
                this.sshSession.setPassword(password);
                Properties sshConfig = new Properties();
                sshConfig.put("StrictHostKeyChecking", "no");
                this.sshSession.setConfig(sshConfig);
                this.sshSession.connect();
            } catch (Exception e) {
                log.error("SftpUtil Session host=[" + host + "];port=[" + port + "];user=[" + username
                        + "];passwd=[" + password + "] error : ", e);
            }
        }
    
    
        /**
         * 连接sftp
         */
        public SftpUtils sftpConnect() {
            if (sftp == null) {
                try {
                    Channel channelSftp = this.sshSession.openChannel("sftp");
                    this.sftp = (ChannelSftp) channelSftp;
                    sftp.connect();
                } catch (Exception e) {
                    log.error("SftpUtil ChannelSftp error : ", e.getMessage());
                }
            }
            return this;
        }
    

    3、获取ftp文件流

     /**
         * 获取远程文件的输出流
         *
         * @param client     ftp连接,这里传进来是因为不能在该方法的最后释放连接
         * @param fileName   文件名称,FTP上的文件名称
         * @param remotePath ftp上的远程目录文件
         */
        public static InputStream retrieveFileStream(FTPClient client, String fileName, String remotePath) throws Exception {
            boolean success = false;
    
            try {
                success = switchDirectory(client, remotePath, false);
                if (success) {
                    return client.retrieveFileStream(fileName);
                }
            } catch (Exception e) {
                log.debug("获取ftp文件流异常,error: {}", e.getMessage());
                throw new RuntimeException("获取ftp文件流异常 error" + e.getMessage());
            }
            return null;
        }
    

    4、在sftp连接服务器上创建目录

    		String mkdir = "mkdir -p " + remotePath;
            String exit = "exit";
            sftp.shellConnect().executeShell(mkdir, exit);
    
     /**
         * 创建shell连接
         */
        public SftpUtil shellConnect() {
            if (shell == null) {
                try {
                    Channel chnanelShell = this.sshSession.openChannel("shell");
                    shell = (ChannelShell) chnanelShell;
                    shell.connect();
                } catch (Exception e) {
                    log.error("SftpUtil ChannelShell error : ", e.getMessage());
                }
            }
            return this;
        }
    
    /**
         * 执行shell 命令
         */
        public boolean executeShell(String... cmds) {
            ChannelShell shell = null;
            try {
                Channel chnanelShell = this.sshSession.openChannel("shell");
                shell = (ChannelShell) chnanelShell;
                shell.connect();
            } catch (JSchException e) {
                log.error("SftpUtil ChannelShell error : ", e);
            }
            try {
                InputStream in = shell.getInputStream();
                OutputStream out = shell.getOutputStream();
                PrintWriter writer = new PrintWriter(out);
                for (String cmd : cmds) {
                    writer.println(cmd);
                }
                writer.flush();
    
                BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                String msg = "";
                StringBuilder result = new StringBuilder();
                while ((msg = reader.readLine()) != null) {
    //                result.append(msg).append(System.lineSeparator());
                }
            } catch (IOException e) {
                throw new RuntimeException("执行命令出错,cmd : " + ArrayUtils.toString(cmds) + " , error : " + e.getMessage());
            } finally {
                shell.disconnect();
            }
    
            return true;
        }
    

    5、上传到sftp所在服务器

      /**
         * 上传文件
         *
         * @param src      要上传的文件流
         * @param dir      上传的目录
         * @param fileName 文件名称
         */
        public boolean uploadStream(InputStream src, String dir, String fileName) throws Exception {
            boolean success = false;
            try {
                this.sftp.cd(dir);
                this.sftp.put(src, fileName);
                success = true;
            } catch (Exception e) {
                log.error("SftpUtil upload directory=[" + dir + "];uploadFile=[" + fileName + "] error : ", e.getMessage());
                throw new RuntimeException("上传文件异常," + "upload directory=[" + dir + "];uploadFile=[" + fileName + "] error:" + e.getMessage());
            } finally {
                try {
                    if (src != null) {
                        src.close();
                    }
                } catch (IOException e) {
                    log.error("SftpUtil upload directory=[" + dir + "];uploadFile=[" + fileName + "] close FileInputStream error : ", e);
                }
            }
            return success;
        }
    
    
    展开全文
  • Linux之个Linux服务器之间互传文件

    千次阅读 2021-11-22 21:58:41
    现在有128和129个文件夹,128服务其中有m文件夹以及其中对应的文件 128服务器 129服务器(没有m文件夹及其中文件) 把aaa.java文件传输到129的opt目录下 //scp 文件名称 root@服务器ip:对应位置 scp aaa.java ...

    1.当从一个Linxu服务器传输文件到另一个服务器上
    现在有128和129两个文件夹,128服务其中有m文件夹以及其中对应的文件
    128服务器
    在这里插入图片描述
    129服务器(没有m文件夹及其中文件)
    在这里插入图片描述
    把aaa.java文件传输到129的opt目录下

    //scp  文件名称 root@服务器ip:对应位置
    //拷贝文件夹则需要在scp后面加上-r
    scp aaa.java  root@192.168.126.129:/opt/
    

    输入yes
    在这里插入图片描述
    输入另一个服务器密码
    在这里插入图片描述

    传输完成
    在这里插入图片描述
    查看129的opt文件夹
    在这里插入图片描述
    2.从另一个服务器中获取文件
    在129服务opt中新建一个bbb.java文件
    在这里插入图片描述
    128中输入命令如下(和传输文件用法类似)
    命令如下

    // scp root@服务器Ip:文件路径 存放路径
    //拷贝文件夹则需要在scp后面加上-r
    scp root@192.168.126.129:/opt/bbb.java /opt/
    

    在这里插入图片描述

    展开全文
  • Java实现与FTP服务器的数据传输2

    热门讨论 2015-11-12 16:53:20
    Java实现与FTP服务器的数据传输。 其中包含了种实现方法。详情请参见本人博客: http://blog.csdn.net/lemon_tree12138/article/details/49777467
  • 两台Linux服务器之间复制文件

    千次阅读 2021-05-09 00:16:58
    简介scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的2.软件安装(双方服务器都需要安装)~]# yum install openssh-...
  • java使用http协议将文件同步到另外一台服务器需求背景核心代码 需求背景 我们在美国服务器上部署了一个site,专门提供美国用户使用,后端服务和文件服务都放在国内。用户经常抱怨我们系统打开文件比较缓慢深圳打不开...
  • Java代码实现两台电脑之间传文件(1)

    万次阅读 热门讨论 2017-10-23 19:56:42
    主要思想:利用JavaAPI中的Socket和输入输出流实现两台电脑之间文件的传递。 相关链接:第二次编码 实例代码:文件发送方(Send.java): //筱白痴 //文件发送方 import java.io.File; import java.io....
  • 本人一开始本来使用FTPClient工具类进行两台服务器之间的文件交互,但是由于公司部分服务器拒绝FTP连接,使用的是SFTP连接,所以最后换成了SFTPClient工具类 FTPClient工具类 例:复制 192.168.1.133 ...
  • java学习---搭建文件管理服务器

    千次阅读 2021-11-09 08:07:20
    利用fastdfs快速搭建文件管理服务器
  • 的文本文件传递到另一台服务器上的指定目录下。现在遇到一个技术问题,无法实现文本由一台服务器拷贝到另一台服务器上, 但是以下情况是可以实现的: 1、单独执行.bat文件是可以实现不同服务器之间的拷贝的 2、用...
  • Java中实现文件的跨服务器上传

    万次阅读 2017-04-10 15:37:32
    前几天做个项目,本身客户端和管理员端是写在一起的,共用一台服务器,客户上传的文件都是存在服务器的硬盘上的。老龙提出要把客户端和管理员端分离,这时候用户上传的附件的存储就出现问题了。显然,把大到几百M的...
  • Java Web实现 使用浏览器从服务器下载文件。 下面实现种情况的下载,需求如下:需求(一):1、用户在页面填写表单。 2、填写完成后,选择下载,将表单内容发往后台。 3、后台根据内容生产一个文件,发送给前端...
  • java上传文件到远程服务器(一)---HttpURLConnection方式

    万次阅读 多人点赞 2017-06-08 15:30:05
    我们在之前的文章JavaWeb静态资源分离思路中已经了解到要把文件上传到静态资源服务器有三种方式:java上传文件到ftp服务器(这个方案需要在静态资源服务器安装ftp服务)java使用HttpURLConnection上传文件到远程服务器 ...
  • java实现两台电脑间TCP协议文件传输

    千次阅读 2019-07-19 17:47:40
    java实现两台电脑间TCP协议文件传输 记录下之前所做的客户端向服务端发送文件的小项目,总结下学习到的一些方法与思路。 注:本文参考自《黑马程序员》视频。 首先明确需求,在同一局域网下的机器人A想给喜欢...
  • 实战在两台服务器部署项目

    千次阅读 2019-05-22 15:54:34
    两台装了win10的同等配置的虚拟机,两个服务器在一个局域网内 。暂且称为服务器A,服务器B。服务器A安装tomcat,部署应用。服务器B安装mysql和redis数据库。 安装服务器环境 服务器A 安装jdk1.8环境 打开环境...
  • 前言 项目中需要从一台服务器调取其他Linux服务器上的文件,并上传到其他服务器接口中;用的是通过文件流上传; 主要是用的: session.execCommand(str) 和session.getStdout() 来获取读取到的文件流; 开始一直读取...
  • 两台服务器之间拷贝文件-scp方法

    万次阅读 2016-03-09 16:53:43
    两台服务器之间拷贝文件-scp方法 使用实例:sup -r /mnt/yilinli_api root@***.**.**.**:/mnt/LL_api不同的Linux之间copy文件通常有4种方法 1.ftp 2.samba服务 3.sftp 4.scp以上前三种方法,都比较繁琐,这里不...
  • 我的业务需求是个不同的web程序放在不同的服务器上,web程序A要访问到web程序B上传上来的文件,所以用到了这一个IO读取文件的接口  JAVA代码(排版有点问题 已经尽力补救了(:3_ヽ)_) import java.io....
  • 使用两台服务器做负载均衡(nginx版)

    千次阅读 2022-01-06 10:21:41
    配置Java环境(两台服务器上都需要):上传jdk包,解压并配置环境变量; 参考链接:https://blog.csdn.net/lm____/article/details/122326767 配置nginx环境:在两台服务器上安装nginx,经过配置,默认nginx页面能够...
  • 1、项目需要,定时向所有在线用户推送一个广告或是推送一个通知之类的(比如服务器升级,请保存好手头工作之类的)。 2、相关环境 , Nginx、tomcat7、centos 6.5 3、项目框架,springMvc 4.0.6、layer
  • 使用 Java 下载FTP文件

    千次阅读 2021-09-08 15:54:09
    本文介绍如何使用 java.net.URLConnection 类从 FTP 服务器下载远程文件,而无需使用第三方库,如 Apache Commons Net、Tomcat 等。 该技术基于 RFC1738 规范,该规范定义了用于 FTP 访问的 URL 格式。此...
  • 今天就来教大家如何把这个点餐系统部署到服务器,实现商用。 传送门 点餐系统的开发,java后台+微信小程序:https://blog.csdn.net/qiushi_1990/article/details/97749686 本节知识点 1,使用springboot开发java...
  • java socket 进行两台PC之间的文件传输

    千次阅读 2017-07-07 11:46:25
    与前一篇的文章类似,前一篇传输文字,这一篇传输文件下面是客户端的代码:import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net....
  • js上传文件 java后台接收文件

    千次阅读 2018-09-10 08:38:55
    1、前端向后台传送文件的过程其实就是,前端将文件流传给后台,后台接收文件流,然后将其写到后台服务器上。处理文件时,后台程序只需要读取服务器上的文件即可。 2、需要引入个jar包:commons-fileupload-1.3.1....
  • java 上传文件到Linux服务器 工具类

    万次阅读 2017-06-06 10:09:35
    最近在帮同学做一个音乐推荐系统后台,需要java远程调用Linux服务器,执行深度学习算法,处理由本地上传的文件。查找了相关的资料,利用ftpClient上传文件服务器。在此贴一下这个助手类(网上很多)。 import org....
  • 我有一套系统两台服务器,一台web(java系统)服务器,一台数据库(Oracle)服务器。web服务器可以直接访问数据库服务器。之前在数据库服务器建立的账号和视图给第三方访问。现在数据库封闭了IP,只能现在web服务器...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 299,389
精华内容 119,755
关键字:

java两台服务器传文件

java 订阅