搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
我家自动化
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
基于SpringBoot2开发WebApi(六)JWT(json web token)集成_jwt getaudience
2
进程间的通信方式(二):管道Pipe和命令管道FIFO_管道和fifo的区别
3
什么是OOM,内存溢出和内存泄漏的区别是什么?为什么会OOM及一些解决方法
4
java设置pdf不可编辑_禁止编辑,但允许在Java iText / PDF中进行页面提取
5
Python爬虫——Urllib_python爬虫urllib
6
java实现pdf文件的电子签字+盖章+二维码+水印+PDF文件加密的解决方案_seal biaozhiku
7
git重新安装_重装git
8
PVE8更换国内源并删除订阅弹窗_pve8换源
9
数据库查询时报IllegalArgumentException异常是什么原因?
10
Dell PowerEdge T140 塔式服务器-安装 Ubuntu Server 20.04.04 教程_戴尔t140安装2012
当前位置:
article
> 正文
Java 使用ftp的方式上传文件到linux,并实现删除,下载_java中ftp上传文件到linux
作者:我家自动化 | 2024-03-17 10:14:13
赞
踩
java中ftp上传文件到linux
连接条件:1.主机
2.端口(注意端口不是22,22为ssh默认端口,一般为21,或者20)
3.用户名和密码
一切准备就绪,执行代码发现执行失败报530错误,拒绝连接
错误分析:
用户名或者密码错误
linux没有安装ftp,或者ftp没有启动。ps -ef | grep ftp
linux默认root用户没有权限
修改方式:1.
vi /etc/vsftpd/ftpusers 将root那一行注释
2.vi /etc/vsftpd/user_list 将root那行注释
4.service vsftpd restart 重启服务
然后,运行代码,发现返回230,证明连接linux成功
执行代码,向linux上传文件发现返回值为false
查看错误原因以及描述:ftp失败不会报任何异常
要注意使用
System.
out
.println(ftpClient.getReplyCode());
System.
out
.println(ftpClient.getReplyString());
勤看返回代码以及原因描述。
执行代码发现,上传失败,错误代码425
第一步:
ftpClient.enterLocalPassiveMode();
将ftp上传的模式变为被动模式
执行代码,发现还是失败,查看错误码为553
解决办法:
1、设置selinux
vi /etc/sysconfig/selinux
将其中的SELINUX=enforcing改为SELINUX=disabled
2、设置如下
setsebool -P allow_ftpd_full_access 1
执行代码,问题解决。
上传文件还有sftp:顾名思义,s为安全,sftp比ftp安全好多,但是效率比ftp低好多,具体看需求选择方式
上代码;
package
com.example.demo.linux.test;
import
org.apache.commons.net.ftp.FTP;
import
org.apache.commons.net.ftp.FTPClient;
import
org.apache.commons.net.ftp.FTPFile;
import
org.apache.commons.net.ftp.FTPReply;
import
java.io.*;
import
java.net.SocketException;
public class
FtpUtils {
/**
* Description: 向FTP服务器上传文件
*
@param
host
FTP服务器hostname
*
@param
port
FTP服务器端口
*
@param
username
FTP登录账号
*
@param
password
FTP登录密码
*
@param
basePath
FTP服务器基础目录
*
@param
filePath
FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basePath+filePath
*
@param
filename
上传到FTP服务器上的文件名
*
@param
input
输入流
*
@return
成功返回true,否则返回false
*/
public static boolean
uploadFile(String host,
int
port, String username, String password, String basePath,
String filePath, String filename, InputStream input) {
//创建ftp客户端
FTPClient ftpClient =
new
FTPClient();
ftpClient.setControlEncoding(
"UTF-8"
);
try
{
//链接ftp服务器
ftpClient.connect(host, port);
//登录ftp
ftpClient.login(username, password);
int
reply = ftpClient.getReplyCode();
System.
out
.println(reply);
//如果reply返回230就算成功了,如果返回530密码用户名错误或当前用户无权限下面有详细的解释。
if
(!FTPReply.
isPositiveCompletion
(reply)) {
ftpClient.disconnect();
return false
;
}
ftpClient.setFileType(FTPClient.
BINARY_FILE_TYPE
);
ftpClient.enterLocalPassiveMode();
//设置ftp为被动模式
if
(ftpClient.changeWorkingDirectory(basePath)){
String[] split = filePath.split(
"/"
);
for
(String s : split) {
ftpClient.makeDirectory(s);
ftpClient.changeWorkingDirectory(s);
}
}
else
{
return false
;
}
// ftpClient.makeDirectory("path");//在root目录下创建文件夹
//ftpClient.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);
// ftpClient.enterLocalPassiveMode();
System.
out
.println(ftpClient.getReplyCode());
System.
out
.println(ftpClient.getReplyString());
boolean
b = ftpClient.storeFile(filename, input);
//文件你若是不指定就会上传到root目录下
System.
out
.println(ftpClient.getReplyCode());
System.
out
.println(ftpClient.getReplyString());
System.
out
.println(b);
// ftpClient.makeDirectory("abc");
String s = ftpClient.printWorkingDirectory();
System.
out
.println(s);
FTPFile[] ftpFiles = ftpClient.listDirectories();
for
(FTPFile ftpFile : ftpFiles) {
System.
out
.println(ftpFile.getName());
}
input.close();
ftpClient.logout();
if
(b){
return true
;
}
}
catch
(SocketException e) {
e.printStackTrace();
}
catch
(IOException e) {
e.printStackTrace();
}
finally
{
if
(ftpClient.isConnected())
{
try
{
ftpClient.disconnect();
}
catch
(IOException ioe)
{
ioe.printStackTrace();
}
}
}
return false
;
}
/**
* Description: 从FTP服务器下载文件
*
@param
host
FTP服务器hostname
*
@param
port
FTP服务器端口
*
@param
username
FTP登录账号
*
@param
password
FTP登录密码
*
@param
remotePath
FTP服务器上的相对路径
*
@param
fileName
要下载的文件名
*
@param
localPath
下载后保存到本地的路径
*
@return
*/
public static boolean
downloadFile(String host,
int
port, String username, String password, String remotePath,
String fileName, String localPath) {
//创建ftp客户端
FTPClient ftpClient =
new
FTPClient();
ftpClient.setControlEncoding(
"UTF-8"
);
try
{
//链接ftp服务器
ftpClient.connect(host, port);
//登录ftp
ftpClient.login(username, password);
int
reply = ftpClient.getReplyCode();
System.
out
.println(reply);
//如果reply返回230就算成功了,如果返回530密码用户名错误或当前用户无权限下面有详细的解释。
if
(!FTPReply.
isPositiveCompletion
(reply)) {
ftpClient.disconnect();
return false
;
}
ftpClient.setFileType(FTPClient.
BINARY_FILE_TYPE
);
ftpClient.enterLocalPassiveMode();
//设置ftp为被动模式
if
(ftpClient.changeWorkingDirectory(remotePath)) {
}
else
{
return false
;
}
// ftpClient.deleteFile("");删除文件
FTPFile[] ftpFiles = ftpClient.listFiles();
for
(FTPFile ftpFile : ftpFiles) {
if
(ftpFile.getName().equalsIgnoreCase(fileName)) {
File localFile =
new
File(localPath +
"/"
+ fileName);
OutputStream is =
new
FileOutputStream(localFile);
boolean
b = ftpClient.retrieveFile(ftpFile.getName(), is);
if
(b) {
return true
;
}
is.close();
}
}
ftpClient.logout();
}
catch
(SocketException e) {
e.printStackTrace();
}
catch
(IOException e) {
e.printStackTrace();
}
finally
{
if
(ftpClient.isConnected()) {
try
{
ftpClient.disconnect();
}
catch
(IOException ioe) {
ioe.printStackTrace();
}
}
}
return false
;
}
}
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/我家自动化/article/detail/255489
推荐阅读
article
UVCCamera项目中usbCameraTest运行时报错--
java
.
lang
.RuntimeE...
报错详情:Process:
com
.serenegiant.usbcameratest, PID: 4409
java
.l...
赞
踩
article
RN
Exception
: Caused by: java.
lang
.Un
support
edOpe...
异常Caused by: java.
lang
.Un
support
edOperation
Exception
: Textur...
赞
踩
article
java
.lang.IllegalStateException:
android
.os.DeadOb...
java
.lang.IllegalStateException:
android
.os.DeadObjectExcept...
赞
踩
article
java
.
lang
.
RuntimeException
: Error
receiving
broadc...
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.nok...
赞
踩
article
使用
火山引擎
APMPlus
解决抖音Top 1
Java
崩溃的通用优化方案_activityst...
问题是在 App 进程向 system_server 进程发送 Activity.onSaveInstanceState...
赞
踩
article
android
接收广播意图错误:
java
.
lang
.
RuntimeException
: Error...
今天在调试毕设项目的时候,点击“搜索蓝牙”按钮,竟然无故运行停止,看了logcat信息为: 11-10 11:04:27...
赞
踩
article
【已解决】
anaconda
配环境“
solving
environment
“卡住(
linux
)
_
ana...
注:如果没有.condarc文件,可以运行conda config --set show
_
channel
_
urls ye...
赞
踩
article
java
sdk
mac
路径
_Mac 上
jdk
默认存放
路径
以及
环境变量
配置...
自从将开发的电脑从Windows换为
mac
后,遇到很多小问题,当然也体会到
mac
上Linux系统的强大之处。首先从官网下...
赞
踩
article
Android
java
、
native
、
kernel
获取堆栈信息常用方法总结_
android
::ca...
在实际开发中,因为经常分析问题,需要从上到下跟踪一些代码调用流程,所以就会有分别在
java
、
native
、
kernel
...
赞
踩
article
华为OD机试 -
密码
解密(
Java
& JS &
Python
&
C
&
C
++)_
密码
解密 o...
华为OD机试 -
密码
解密(
Java
& JS &
Python
&
C
&
C
++),实现:字符串替换操作_
密码
解密 ...
赞
踩
article
Java
Script 流行度最高
,
Java
屈居第三! | 2020 最新
软件开发
状况
报告
...
整理 |弯月
,
责编 | 郭芮头图 | CSDN 下载自视觉中国出品 | CSDN(ID:CSDNnews)这篇
报告
将重点...
赞
踩
article
Linux
--
多
进程
编程之 - 基础实现、
孤儿
进程
_怎么
可以
使
进程
变成
孤儿
进程
...
在
Linux
中创建一个新
进程
的方法是使用 fork()函数。_怎么
可以
使
进程
变成
孤儿
进程
怎么
可以
使
进程
变成
孤儿
进程
...
赞
踩
article
Linux
--
多
进程
编程之 -
僵尸
进程
_
僵尸
进程
有
什么
危害
...
僵尸
进程
是当子
进程
比父
进程
先结束,而父
进程
又没
有
回收子
进程
,释放子
进程
占用的资源,此时子
进程
将成为一个
僵尸
进程
。_
僵尸
进...
赞
踩
article
【
Linux
】应用篇七
--
exec
函数
族和守护进程_
exec
nohup
...
应用篇七
--
exec
函数
族和守护进程一、
exec
函数
族1、
exec
函数
族2、
exec
l /
exec
lp3、
exec
v ...
赞
踩
article
获取
进程
id
linux
,
linux
获取
进程
id
和
进程
名称...
linux
获取
进程
id
和
进程
名称作为一个共享库,应该需要统计使用本库的各种应用程序的使用频率,使用方法等信息。才能针对主...
赞
踩
article
【
linux
】
循序渐进
学运
维-基础篇-
进程
管理
...
文章目录Linux
进程
1.
进程
的概念2.
进程
的属性3. 关于僵尸
进程
Linux
管理
的基本命令1. ps命令1) 常用...
赞
踩
article
Linux
【实操篇】——
进程
管理
、服务
管理
、
软件包
管理
(
rpm
、
yum
)_
linux
rpm
、yu...
Linux
进程
管理
、服务
管理
、
软件包
管理
(
rpm
、
yum
)详细讲解。_
linux
rpm
、
yum
的
概念和操作及
进程
管理
的
...
赞
踩
article
Linux
--
多
进程
编程之 -
守护
进程
_仿照本讲
守护
进程
的示例
程序
编写
一个
守护
进程
,将
进程
pi...
守护
进程
是
一个
生存期较长的
进程
,他常常在系统引导装入是启动,仅仅在系统关闭的才终止。也就是通常所说的 Daemon
进程
...
赞
踩
article
Linux
--
多
进程
编程之 -
守护
进程
的
出
错处理_
守护
进程
出
bug
...
因为
守护
进程
完全脱离终端控制,所以不能像其它
进程
一样将错误信息输
出
到控制终端。所以如何处理错误消息是一个问题。在Linu...
赞
踩
article
【
Linux
】
进程
概念与
进程
状态
_
linux
有
一个
接口
进程
正在
运行
,但是就是不跑...
进程
概念与
进程
描述,如何查看
进程
、结束
进程
、获取
进程
id、创建
进程
,
进程
普遍的三种
状态
与
Linux
下的七种
进程
状态
,僵尸...
赞
踩
相关标签
uvccamera
android
java
python
开发语言
广播接收intent错误
linux
运维
java sdk mac 路径
c语言
华为机试
算法
Java
JavaScript
Python
C语言
C++
孤儿进程
进程
fork
getpid