Linux安装ftp、Java的FTP上传下载文件工具类

Linux安装ftp、Java的FTP上传下载文件工具类

    • 文章说明
    • Linux安装vsftpd
    • Java的工具类

文章说明

网上找到说linux安装ftp,采用vsftpd,在后续的配置中少了一些说明,给我折磨了许久,写下这篇文章来记录

Linux安装vsftpd

命令非常简单,而且不需要什么额外的配置

yum install vsftpd -y
service vsftpd start
service vsftpd statusvi /etc/vsftpd/vsftpd.conf # 添加下面三行pasv_enable=YES			# 允许被动模式
pasv_min_port=5000     # 被动模式下服务器使用的最小端口
pasv_max_port=5000     # 被动模式下服务器使用的最大端口

上面的几个命令就是安装配置vsftpd的步骤,当然如果开启了防火墙则需要开启那个端口,然后如果是云服务器也需要在规则里面放开这个端口的通行

改为bash脚本如下

yum install vsftpd -y
echo -e "pasv_enable=YES\npasv_min_port=5000\npasv_max_port=5000" | sudo tee -a /etc/vsftpd/vsftpd.conf
service vsftpd start
service vsftpd status

在安装并开启好vsftpd服务后,还需要创建用户,如jack用户,采用如下命令

useradd jack
passwd jack

并且为它设置一下密码,然后就可以了,需要注意的是有一些用户默认是不可以采用ftp连接的,在 /etc/vsftpd/user_list 里面,采用如下命令可以查看到内容

nl /etc/vsftpd/user_list
1	# vsftpd userlist
2	# If userlist_deny=NO, only allow users in this file
3	# If userlist_deny=YES (default), never allow users in this file, and
4	# do not even prompt for a password.
5	# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
6	# for users that are denied.
7	root
8	bin
9	daemon
10	adm
11	lp
12	sync
13	shutdown
14	halt
15	mail
16	news
17	uucp
18	operator
19	games
20	nobody

Java的工具类

简单引入依赖

<dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.8.0</version>
</dependency>

工具类代码

package com.boot.util;import org.apache.commons.net.ftp.FTPClient;import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;public class FtpUtil {private final String host;private final Integer port;private final String username;private final String password;private final String path;public FtpUtil(String host, Integer port, String username, String password, String path) {this.host = host;this.port = port;this.username = username;this.password = password;this.path = path;}private FTPClient getFtpClient() throws IOException {FTPClient ftpClient = new FTPClient();ftpClient.connect(host, port);ftpClient.login(username, password);ftpClient.enterLocalPassiveMode();ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);ftpClient.changeWorkingDirectory(path);return ftpClient;}public void uploadFile(String fileName, InputStream inputStream) throws Exception {FTPClient ftpClient = getFtpClient();ftpClient.storeFile(new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1), inputStream);ftpClient.disconnect();}public void downloadFile(String fileName, OutputStream outputStream) throws Exception {FTPClient ftpClient = getFtpClient();try (InputStream inputStream = ftpClient.retrieveFileStream(new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1))) {byte[] buf = new byte[1024];int read;while ((read = inputStream.read(buf)) != -1) {outputStream.write(buf, 0, read);}ftpClient.disconnect();}}public static void main(String[] args) throws Exception {FtpUtil ftpUtil = new FtpUtil("****", 21, "****", "****", "****");ftpUtil.uploadFile("测试文件.txt", Files.newInputStream(Paths.get("C:/file/测试文件.txt")));try (FileOutputStream outputStream = new FileOutputStream("C:/file/测试文件2.txt")) {ftpUtil.downloadFile("测试文件.txt", outputStream);}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/40961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue通过后台返回的数字显示不同的文字内容,多个内容用、隔开

后台返回的数据 显示效果&#xff1a; html&#xff1a; <el-table-columnalign"center"label"使用过的小程序"width"124"v-if"activeTab 0"><template #default"scope"><divv-for"(item, index) in s…

数据结构(3.5)——队列的顺序实现

队列的顺序实现 #define MaxSize 10//定义队列中元素的最大个数 typedef struct {int data[MaxSize];//用静态数组存放队列元素int front, rear;//队头指针和队尾指针 } SqQueue;void testQueue() {SqQueue Q;//声明一个队列(顺序存储) } 队列的初始化操作和判空 //初始化队…

大模型面试题目

1.为什么需要做位置编码 位置编码&#xff08;Positional Encoding&#xff09;在变换器&#xff08;Transformer&#xff09;模型中非常重要&#xff0c;因为变换器架构本身没有内置的顺序信息。变换器使用的是自注意力机制&#xff0c;它能够捕捉输入序列中所有词之间的相关性…

论文解析——Transformer 模型压缩算法研究及硬件加速器实现

作者及发刊详情 邓晗珂&#xff0c;华南理工大学 摘要 正文 实验平台 选取模型&#xff1a; T r a n s f o r m e r b a s e Transformer_{base} Transformerbase​ 训练数据集&#xff1a;WMT-2014 英语-德语翻译数据集、IWSLT-2014 英语-德语互译数据集 Transformer模…

JVM垃圾回收性能调优实战指南

JVM垃圾回收性能调优实战指南 一、引言 在Java应用程序中&#xff0c;垃圾回收&#xff08;Garbage Collection, GC&#xff09;是自动管理内存的重要机制。然而&#xff0c;不恰当的垃圾回收配置可能导致性能瓶颈&#xff0c;如频繁的GC暂停、内存碎片过多等。因此&#xff…

kpatch制作内核热补丁步骤总结

零、原理及参考 kpatch入门实践教程-CSDN博客 Kpatch 使用过程及其原理-CSDN博客 一、准备工作 安装对应版本的kpatch-build.rpm并解决依赖diff -Naur dir1 dir2 > hot.patch 拿到补丁文件下载对应内核版本的src.rpm安装好对应的开发包kernel-debuginfo&#xff0c;kern…

从GPT-1到GPT-3 预训练语言模型的演进与突破

本文由 ChatMoney团队出品 前言 Generative Pre-trained Transformer&#xff08;GPT&#xff09;系列是由OpenAI开发的预训练语言模型&#xff0c;它们在多种NLP任务中取得了令人瞩目的成绩&#xff0c;包括文章生成、代码生成、机器翻译和问答等。GPT系列模型的核心思想是通…

数据库开发:mysql基础一

文章目录 数据库开发Day15&#xff1a;MySQL基础&#xff08;一&#xff09;一、MySQL介绍与安装【1】MySQL介绍&#xff08;5&#xff09;启动MySQL服务&#xff08;6&#xff09;修改root登陆密码 二、SQL简介三、数据库操作四、数据表操作4.1、数据库数据类型4.2、创建数据表…

对标 GPT-4o 的开源实时语音多模态模型:Moshi

是由法国的 AI 实验室 Kyutai 推出的实时语音多模态模型&#xff0c;支持听、说、看&#xff0c;最关键的是你现在就可以在浏览器中使用&#xff0c;如果这个链接延迟高&#xff0c;可以试试这个, 无需输入邮箱&#xff0c;点击 Join queue 即可。 简单体验了下&#xff0c;比…

#### golang中【堆】的使用及底层 ####

声明&#xff0c;本文部分内容摘自&#xff1a; Go: 深入理解堆实现及应用-腾讯云开发者社区-腾讯云 数组实现堆 | WXue 堆&#xff08;Heap&#xff09;是实现优先队列的数据结构&#xff0c;Go提供了接口和方法来操作堆。 应用 package mainimport ("container/heap&q…

结构方程模型-验证性因子分析模型

初级 第7讲 验证性因子分析模_哔哩哔哩_bilibili

使用 ESP32 接收来自 MAX4466 模拟麦克风模块的数据,并通过 DAC 输出模拟音频信号,可以通过以下步骤实现:

硬件准备 ESP32 开发板MAX4466 模拟麦克风模块扬声器或耳机接线 MAX4466 模块输出(AO) -> ESP32 ADC 引脚(如 GPIO 34)ESP32 DAC 引脚(如 GPIO 25 或 GPIO 26) -> 扬声器或耳机软件准备 音频采集DAC 转码并播放代码实现 以下代码展示了如何从 MAX4466 读取模拟音频…

【Go语言入门学习笔记】Part7.闭包和defer关键字

一、前言 闭包有点像对象&#xff0c;而defer适合于类似功能中利用资源时&#xff0c;提前写几句defer 释放资源&#xff0c;防止后面释放资源忘记写释放资源。 二、学习代码 package mainimport ("fmt" )// getC的返回值是一个函数&#xff0c;需要的参数为空&…

GitHub Pull Request流程详解

GitHub Pull Request流程详解 在协作开发中&#xff0c;GitHub的Pull Request&#xff08;PR&#xff09;功能至关重要&#xff0c;它允许开发者在代码库中进行修改、审查和合并代码。本文将详细介绍GitHub Pull Request的完整流程&#xff0c;帮助你更好地理解和使用这一强大…

网络安全的十字路口:向“架构化”转移

市场条件正在快速变化 针对上述这些问题&#xff0c;在这段时间里&#xff0c;安全技术供应商推出了许多技术解决方案&#xff0c;比如SIEM、SOAR、XDR、UEBA等&#xff0c;但新产品的推出并未使得安全态势有所好转&#xff0c;许多问题依然存在&#xff0c;这导致了市场动态的…

【DevOps】Java内存分配与JVM参数详解

目录 引言 JVM内存结构 JVM参数概述 堆内存分配 年轻代与老年代 调整堆内存大小 调整年轻代与老年代比例 元空间分配 调整元空间大小 垃圾回收 调整GC参数 调整GC日志 线程栈分配 调整线程栈大小 性能调优 结论 在Java开发中&#xff0c;理解Java虚拟机&#x…

claude3.5写作——《基于灰色预测的中国人口数量预测》

文章目录 站点和提问引言一、灰色预测模型介绍二、中国历年人口数据三、灰色预测模型的建立1.建立原始序列2.生成1-AGO序列3.计算背景值4.构造数据矩阵并计算参数5.模型检验6.模型预测 四、预测结果分析五、政策建议结语参考文献 站点和提问 站点&#xff1a;中国官方克劳德3.…

如何更改 Python pip 源为国内源

在使用 Python 安装包工具 pip 时&#xff0c;经常会遇到下载速度慢的问题。这通常是因为默认使用的官方源 https://pypi.org/simple 在国内访问速度较慢。为了提高下载速度&#xff0c;我们可以将 pip 源更改为国内的镜像源。本文将介绍如何临时和永久地更改 pip 源为国内源。…

光伏电站数据采集方案(基于工业路由器部署)

​ 一、方案概述 本方案采用星创易联SR500工业路由器作为核心网关设备&#xff0c;实现对光伏电站现场数据的实时采集、安全传输和远程监控。SR500具备多接口、多功能、高可靠性等特点&#xff0c;能够满足光伏电站数据采集的各种需求。&#xff08;key-iot.com/iotlist/sr500…

RK3568平台(opencv篇)ubuntu18.04上安装opencv环境

一.什么是 OpenCV-Python OpenCV-Python 是一个 Python 绑定库&#xff0c;旨在解决计算机视觉问题。   Python 是一种由 Guido van Rossum 开发的通用编程语言&#xff0c;它很快就变得非常流行&#xff0c;主要是 因为它的简单性和代码可读性。它使程序员能够用更少的代码行…