将从数据库中查询出的数据,按照字段排序,数据之间以 "|"分隔,存储到文本文件中,上传到指定的服务器

下面分两种方法来进行实现:SFTP 和 FTP,一般使用 SFTP

SFTP

SFTP 需要引入包

<dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.8.0</version>
</dependency><dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version>
</dependency>
public static void main(String[] args) {// sb 为查询出来的数据转换成的字符串ByteArrayInputStream inputStream = new ByteArrayInputStream(sb.toString().getBytes());boolean success = uploadFileSFTP("xxx.xxx.xxx.xxx", 22, "root", "root", "/home/data", "/20210626", "test.txt", inputStream);log.info("文件上传成功");
}
/*** 向FTP服务器上传文件** @param host     FTP服务器ip* @param port     FTP服务器端口* @param username FTP登录账号* @param password FTP登录密码* @param basePath FTP服务器基础目录,/home/data* @param filePath FTP服务器文件存放路径* @param filename 上传到FTP服务器上的文件名* @param input    输入流* @return 成功返回true,否则返回false*/
private boolean uploadFileSFTP(String host, int port, String username, String password, String basePath,String filePath, String filename, InputStream inputStream) {boolean result;FTPClient ftp = new FTPClient();try {JSch jsch = new JSch();// 获取sshSession  账号-ip-端口Session sshSession = jsch.getSession(username, host, port);// 添加密码sshSession.setPassword(password);Properties sshConfig = new Properties();// 严格主机密钥检查sshConfig.put("StrictHostKeyChecking", "no");sshSession.setConfig(sshConfig);// 开启sshSession链接sshSession.connect();// 获取sftp通道Channel channel = sshSession.openChannel("sftp");// 开启channel.connect();ChannelSftp sftp = (ChannelSftp) channel;// 设置为被动模式ftp.enterLocalPassiveMode();// 设置上传文件的类型为二进制类型ftp.setFileType(FTPClient.BINARY_FILE_TYPE);// 进入到要上传的目录  然后上传文件sftp.cd(basePath + filePath);// sftp put为上传,get为下载,之后会出一篇下载的代码sftp.put(inputStream, filename);inputStream.close();result = true;} catch (Exception e) {log.error("FTP服务器 文件上传失败 失败原因:{}", e.getMessage(), e);result = false;} finally {if (ftp.isConnected()) {try {ftp.disconnect();} catch (IOException e) {log.error("FTP服务器 关闭失败 失败原因:{}", e.getMessage(), e);}}}return result;
}

FTP

FTP需要引入的包

<dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.8.0</version>
</dependency>
/*** @param url      FTP服务器hostname* @param port     FTP服务器端口* @param username FTP登录账号* @param password FTP登录密码* @param path     FTP服务器保存目录* @param filename 文件名 6403_APP_YYYYMMDD_渠道标志_批次号.txt* @param input    输入流* @return*/
private boolean uploadFileFTP(String url, int port, String username, String password,String path, String filename, InputStream inputStream) {boolean success;FTPClient ftp = new FTPClient();try {int reply;// 链接 FTP 服务器// 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器ftp.connect(url, port);// 登录ftp.login(username, password);// 返回链接码reply = ftp.getReplyCode();// 设置文件格式为二进制类型ftp.setFileType(FTPClient.BINARY_FILE_TYPE);if (!FTPReply.isPositiveCompletion(reply)) {ftp.disconnect();log.info("FTP服务器 拒绝连接");return false;}// 跳转到指定的目录路径ftp.changeWorkingDirectory(path);// 存储文件ftp.storeFile(filename, inputStream);inputStream.close();ftp.logout();success = true;} catch (IOException e) {log.error("FTP服务器 文件上传失败 失败原因:{}", e.getMessage(), e);return false;} finally {if (ftp.isConnected()) {try {ftp.disconnect();} catch (IOException e) {log.error("FTP服务器 关闭失败 失败原因:{}", e.getMessage(), e);}}}return success;
}

FTP上传会出现一个

MalformedServerReplyException: Could not parse response code

异常,解决办法可以参考下面的解决办法
https://blog.csdn.net/shenju2011/article/details/106614717

参考文档:
https://blog.csdn.net/a116385895/article/details/107150935/

https://blog.csdn.net/hpp1314520/article/details/72875151

Java上传文件到Linux服务器相关推荐

  1. java上传文件到服务器,java上传文件到云服务器

    java上传文件到云服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分别安装 ...

  2. linux非root上传文件,root账号无法上传文件到Linux服务器

    普通权限的账号,通过ftp工具,可以正常连上Linux服务器,可以正常上传文件.但是root账号却无法上传文件. 网上搜了半天才知道,默认情况下vsftp是不允许root用户登录的,可以通过修改限制来 ...

  3. Windows 通过 SecureCRT 8.x 上传文件到Linux服务器

    转载自  Windows 通过 SecureCRT 8.x 上传文件到Linux服务器 1.SecureCRT 连接 Linux 服务器,这一步操作简单: 2.连接并登录成功后,直接在连接成功的页签上 ...

  4. sftp方式从windows上传文件到Linux服务器

    今天我一直用scp想实现从windows上传文件到Linux服务器,但是鼓捣了半天也没有实现.后来查资料才发现,scp实现文件的上传和下载貌似只能在Linux和Linux之间实现.(欢迎指正不对的地方 ...

  5. JAVA上传文件图片到服务器保存

    这里我记录一个比较简单方便操作的JAVA上传文件图片到服务器并且保存! 首先是页面 html的   我这是提交一个文件和类型 <div style="border: 1px solid ...

  6. java上传文件到远程服务器(一)---HttpURLConnection方式

    我们在之前的文章 JavaWeb静态资源分离思路 中已经了解到要把文件上传到静态资源服务器有三种方式: java上传文件到ftp服务器(这个方案需要在静态资源服务器安装ftp服务) java使用Htt ...

  7. 本地上传文件到Linux服务器

    [问题描述] 如何将本地文件上传至Linux服务器上(这里分别以Windows和Ubuntu系统为例) [解决方法] scp filename username@IP:/home/directory ...

  8. M1 Mac上传文件到Linux服务器

    M1mac上传文件到linux服务器 1.要保证服务器ssh端口是22 2.重启 3.进入要上传的文件的根目录 4.连接服务器上传文件 1.要保证服务器ssh端口是22 vi /etc/ssh/ssh ...

  9. c上传文件到linux服务器,上传文件到Linux服务器

    1. Window上传文件到Linux 1.1 图形化界面winscp 适用于传送文件和目录,但要安装额外的软件winscp 1.2 lrzsz套件 适用于传送文件,使用ssh远程登录管理软件xshe ...

最新文章

  1. Python之父考虑重构Python解释器
  2. 12月28日二周四次【Python基础语法】
  3. 求正负数交互序列的和的MFC版
  4. NavReady的使用
  5. 一般控制矩阵转能控标准型
  6. Orac and Medians CodeForces - 1350D(思维)
  7. .NET Core 3.0 可卸载程序集原理简析
  8. 用友网络2021年净利润7.1亿元 同比减少28.2%
  9. mysql更新数据库中int 1_Mysql数据库int(1)和tinyint(1)的区别扩展阅读
  10. android的log.v,Android Log.v(),Log.d(),Log.i(),Log.w(),Log.e() - 何时使用每一个?
  11. 个性化你的IE,把你的名字刻在IE上!
  12. python基础--面向对象之绑定非绑定方法
  13. 全志F1C100s使用记录:u-boot linux rootfs 编译与烧录测试(基于SD卡)
  14. 轻松搞懂Java中的自旋锁
  15. python练习题之乌龟吃鱼游戏
  16. 在校大学生关于程序员培训机构的想法
  17. arduino的L298N电机驱动模块如何和直流电机接线
  18. Git-Clone succeeded, but checkout failed
  19. dns服务器 性能测试,dns服务器性能测试报告.docx
  20. Vue的渐进式怎么理解

热门文章

  1. webpack使用方法(一):安装webpack
  2. PERT2型保温管/PERT2型管材焊接前要特别注意什么
  3. html如何只刷新页面指定,js控制页面刷新 JS刷新当前页面的几种方法总结
  4. oracle数据库procedure(存储过程)的创建与调用
  5. android pcm文件大小_Android 音视频开发(二):使用 AudioRecord 采集音频PCM并保存到文件...
  6. 【Kail 学习笔记】Dmitry信息收集工具
  7. GDC2017 把“现实的天空”在游戏内再现【Forza Horizon 3】的天空表现
  8. Ruby_11_多线程と包管理
  9. Hystrix 服务降级和熔断
  10. 这是一个知识更新速度不断加快的时代,在线学习平台成新趋势