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.pswp.cn/diannao/40961.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40961.shtml
英文地址,請注明出處:http://en.pswp.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;主要是 因為它的簡單性和代碼可讀性。它使程序員能夠用更少的代碼行…