通过java操作ftp

System.Net.FtpClient C#的FTP操作类库,支持FTP文件的上传,下载等等 立即下载
在做项目中,我们一般都会有上传附件的需求,所以学会操作文件是java基础。关于文件存放的选择暂时知道的也就几种:
1、保存在磁盘,这种方式算是比较好的,但是部署在各个地方的应用需要共同访问时就很麻烦。
2、保存在数据库,这个有些人会用,但是相对用的人比较少,因为它即使有着让所有的应用都能访问的方便。但是会使数据库的体积快速增长,倒致后期操作数据比较麻烦,比如说迁移等等。
3、最后我还知道的一种方式是,上传到ftp。这种最终也是通过磁盘保存,但是这样方便多个应用访问。个人觉得是一种比较好的保存方式。
以下为 java代码:
package com.talent.main.freewf.util;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import sun.net.TelnetInputStream;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;
import com.buyli.base.exception.GeneralException; //这个是自定义异常,java代码中需要作一定的修改
import com.buyli.base.util.ArchiveUtil; //这里作为静态参数类 java代码中需要作一定修改
import com.buyli.base.util.LoggerUtil; //这个是日志操作类 java代码中需要作一定修改
/**
* @title:ApacheFtpClient
* @Copyright @ 2012 All right reserved
* @author www.360buyli.com
* @Date 2012-3-13 下午01:57:23
* @version 1.0
* @description ftp文件处理
*
*/
public class ApacheFtpClient {
static Logger logger=Logger.getLogger(ApacheFtpClient.class);
private FtpClient ftpClient;
public ApacheFtpClient() {
}
private void connect() {
try {
ftpClient = new FtpClient();
ftpClient.openServer(ArchiveUtil.SERVER); //这里是ftp服务器的ip 如:192.168.8.99
ftpClient.login(ArchiveUtil.USER, ArchiveUtil.PASSWORD); //这里分别为用户名和密码
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*
* @param filename
* 文件名
* @param filelocal
* 本地路径
* @param ftppath
* ftp路径
* @throws Exception
*/
public void up(String filename, String filelocal, String ftppath)
throws Exception {
this.connect();
try {
if (ftppath.length() != 0) {
ftpClient.cd(ftppath);
} else {
ftpClient.cd("/");
}
ftpClient.binary();
TelnetOutputStream os = ftpClient.put(filename);
File file_in = new File(filelocal);
FileInputStream is = new FileInputStream(file_in);
byte[] bytes = new byte[ArchiveUtil.BUFFER];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
is.close();
os.close();
this.close();
} catch (IOException ex) {
this.close();
ex.printStackTrace();
}
}
/**
* 读取目录下存在的文件
*
* @param args
* @throws IOException
* @throws GeneralException
* @throws Exception
*/
public List<String> readFile(String ftppath) throws IOException, GeneralException {
this.connect();
List<String> readFileList = new ArrayList<String>();
try {
if (ftppath.length() != 0) {
ftpClient.cd(ftppath);
} else {
ftpClient.cd("/");
}
ftpClient.binary();
BufferedReader ftpFileName = new BufferedReader(
new InputStreamReader(ftpClient.nameList(ftppath)));
String strName = "";
while ((strName = ftpFileName.readLine()) != null) {
readFileList.add(strName);
}
} catch (Exception e) {
LoggerUtil.logError(e,logger,"连接FTP失败");
e.printStackTrace();
} finally {
this.close();
}
return readFileList;
}
/**
* 下载单个文件
*
* @param args
* @throws IOException
* @throws IOException
* @throws GeneralException
* @throws SocketException
* @throws Exception
*/
public void download(String filename, String filepath) throws IOException,
GeneralException {
this.connect();
File basefile = new File(ArchiveUtil.TEMPSAVEXML);
if(basefile.exists()){
basefile.mkdir();
}
String localpath = ArchiveUtil.TEMPSAVEXML + File.separator + filename; // 文件的本地存放路径
ftpClient.cd(filepath);
File file = new File(localpath);
OutputStream out = new FileOutputStream(file);
TelnetInputStream fget = ftpClient.get(filename);
DataInputStream puts = new DataInputStream(fget);
byte[] bt = new byte[ArchiveUtil.BUFFER];
int i;
while ((i = puts.read(bt)) != -1) {
out.write(bt, 0, i);
}
puts.close();
fget.close();
out.close();
this.close();
}
/**
* 删除ftp文件,当文件读取下载完成,读取内容,接收成功后删除,如果接收失败,则再次上传后删除
*
* @param args
* @throws Exception
*/
public void delete_file(String url, String ftppath) throws Exception {
this.connect();
if (ftppath.length() != 0) {
ftpClient.cd(ftppath);
} else {
ftpClient.cd("/");
}
ftpClient.binary();
ftpClient.sendServer("DELE " + url + "\r\n");
@SuppressWarnings("unused")
int status = ftpClient.readServerResponse();
this.close();
}
public void close() {
if (ftpClient != null) {
try {
ftpClient.closeServer();
} catch (IOException e) {
LoggerUtil.logError(e,logger,"ftp关闭时出错");
e.printStackTrace();
}
}
}
}
VS2017中调用gdal(C#版)的方法二(含gdal下载地址,配置过程,代码测试,超详细!!) VS2017中gdal(C#)版的配置与测试 上次记录了直接在VS2017中下载并应用gdal的方法,这次来记录一下网上下载的安装包配置与测试的方法。 一、环境、版本及下载地址 win10,vs2017社区版,gdal2.4.4 还是像之前在Unity中应用gdal一样,最好是下载已经编译好的C#版的gdal,不然自己配置真的很容易出错,我就是这样的,下面提供不同版本的gdal下载地址: 1.GDAL2.4.4(C#版、64位): https://download.youkuaiyun.com/download/che 阅读详情

相关推荐

基于FFT的阵列方向图快速计算公式推导

因为自己毕设涉及到阵列方向图综合相关知识,最近阅读了关于方向图综合的相关文献,就其中关于使用FFT计算阵列方向图的方法进行了公式推导。 简介: 自从1965年Colley-Tukey发表快速傅里叶变换[1]论文以来,FFT在许多科学技术领域获得了广泛和成功的应用。在阵列信号处理与雷达信号处理领域,随着科技的发展,对于电尺寸较大的相控阵天线,使用公式按照级数求和计算天线阵列方向图的方法效率甚低,...

qq_38151438的博客 4292

FTPClient 简介

下面是FtpClient类的一些介绍:  sun.net.ftp.FtpClient.,该类库主要提供了用于建立FTP连接的类。利用这些类的方法,编程人员可以远程登录到FTP服务器,列举该服务器上的目录,设置传输协议,以及传送文件。FtpClient类涵盖了几乎所有FTP的功能,FtpClient的实例变量保存了有关建立"代理"的各种信息。下面给出了这些实例变量:   public stati

baima1234的专栏 3241

ENVI 5.6 + Sarscape 5.2 保姆级教程:哨兵一号数据处理全流程(含DEM自动下载)

本文提供ENVI 5.6与Sarscape 5.2处理哨兵一号数据的完整实战教程。详细介绍了从数据导入、研究区裁剪、DEM自动下载与集成,到核心的配准、滤波及地理编码全流程,最终生成可用于定量分析的地理编码后向散射系数图。重点演示了DEM数据在SAR处理中的关键作用与自动获取方法,帮助用户快速掌握SAR数据基础处理技能。

coffee的博客 682

java ftp ftpclient_FTPClient 用法

/*** connectServer* 连接ftp服务器* @throws java.io.IOException* @param path 文件夹,空代表根目录*@param password 密码* @param user 登陆用户* @param server 服务器地址*/public void connectServer(String server, String user, St...

weixin_42252122的博客 1401

colmap+openMVS稠密重建

简要记录一下colmap+openMVS稠密重建相关使用。

weixin_41631106的博客 2243

NXP S32K3 Safety软件生态全解析:RTD、SPD、SAF、SCST到底怎么选?

本文深入解析NXP S32K3系列MCU的安全软件生态,详细对比RTD、SPD、SAF和SCST四大组件的功能定位与选型策略。针对不同ASIL等级需求,提供从架构设计到工程实践的完整解决方案,帮助开发者高效实现功能安全认证,优化汽车电子系统的安全性与可靠性。

weixin_42524226的博客 324

ftpclient上传和下载文件

java上传文件到ftp有两种实现方式,一种是使用sun公司提供的sun.net.ftp包里面的FtpClient,另一种是Apache组织提供的org.apache.commons.net.ftp包里的FTPClient,现在我来分别说下两种实现方式。 sun的FtpClient:我...

chiwanqi9869的博客 325

黑客渗透测试后门隐藏技术揭秘

本文介绍了在授权渗透测试中隐藏后门文件(muma.exe)的多种技术手段。主要包括:通过WinRAR自解压脚本将后门与正常程序捆绑实现双开;利用系统自动运行目录和注册表实现开机自启;修改文件图标伪装成常用软件;将文件存放在冷门系统目录;设置系统+隐藏双重属性增强隐蔽性。此外还涉及对抗安全软件的加壳(UPX)、免杀(msfvenom编码)技术,以及进程注入、日志清除等运行隐藏方法。所有技术仅限合法授权测试使用,未经授权使用将面临法律责任。

m0_60781580的博客 1040

java上传、下载、删除ftp文件

java上传、下载、删除ftp文件

牟云飞的博客 1万+

一分钟了解OpenSpec (规格)

OpenSpec是由Fission AI开源的轻量级规范驱动开发(SDD, Spec-Driven Development)CLI工具。它专为AI编程助手(如Cursor、Claude Code)设计,核心是**“先约定,后编码”:在AI写代码前,先通过结构化规范文档达成共识,让开发过程可预测、可审计、可协作**。轻量无侵入:单CLI、无依赖、不改造项目、1分钟接入存量友好:增量Spec、不重构旧文档、1→n王者完全可控:每步审查、AI按图施工、零返工协作利器。

h a 6 6 6 c k 为 你解决复杂难题! 2758

YOLO26涨点改进 | 独家创新,注意力改进篇 | AAAI 2025 | YOLO26引入 DRM 防御优化模块,进行特征优化/特征增强,助力目标检测、图像分类、图像分割有效涨点

本文提出了一种基于DRM防御优化模块改进的YOLO26网络模型,显著提升了目标检测的鲁棒性和特征提取能力。DRM模块通过优化特征提取过程、增强抗噪声能力和补充细节信息,有效提高了模型在复杂场景下的检测精度和定位准确度。该模块可集成于UNet等主干网络,采用Transformer结构实现特征精炼,在对抗攻击环境下仍能保持稳定的融合效果。实验表明,改进后的模型在红外与可见光图像融合任务中表现出色,同时提升了下游任务性能。文章详细介绍了DRM模块的结构、作用机制及实现代码,并提供了两种YOLO26改进方案.

Ai缝合怪、助力小伙伴高效发论文 145

FtpClient的使用

摘自:http://hi.baidu.com/yuanhotel/item/000b6334894d11f42784f4da Java的ftp操作 package com.why.ftp;import java.io.DataInputStream;import java.io.File;import java.io.FileInputStream;import java.io.Fil...

weixin_30689307的博客 467

芒果YOLOv8改进72:动态标签分配策略篇之ATSS:自适应训练样本选择Adaptive Training Sample Selection策略

YOLOv8代码实践|ATSS标签分配策略改进🥭

包括YOLOv5、YOLOv7、YOLOv8等模型改进 2909

java操作FTP

类提供了许多其他方法来处理各种FTP操作。此外,实际返回值可能会根据FTP服务器的响应而有所不同。,先确认你是FTP文件服务器还是FTPS。这句代码报错,确认你的文件服务器类型,是。,否则connect就会报这个错误。java链接FTP文件使用的是。指定本地路径的时候要用前缀。

while(life)++; 1020

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

JAVA操作FTP

用java语言,对FTP服务器进行操作

hoohyouxi的博客 246

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java中的FTP操作

通过以上示例,我们可以看到,在Java中进行FTP操作并不是一件复杂的事情。掌握这些技能后,无论是处理日常文件传输需求,还是构建复杂的企业级应用,都能更加得心应手。希望这篇文章能对你有所帮助。如果你有任何问题或建议,欢迎在评论区留言。我们下次再见!当我们专注于编程细节时,不要忘记代码背后的逻辑和目的。只有把技术和业务需求结合起来,才能真正发挥代码的力量。

weixin_46372265的博客 571

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JAVA操作FTP(FTP工具类)

JAVA FTP操作 导入commons-net <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.6</version> </dependency> package com.my.ftp.test; import java.io.File; imp

wangyingjief的博客 7429

java ftp 教程_Java 中两种ftp操作方式

最近看到几篇关于java中操作ftp的文章,所以想写一个总结贴,标记一下,方便以后应用。首先,我们可以应用java中的ftp库,java中提供了一个ftpclient的类,提供了很多操作ftp的方法。先上代码,一看便知,很简单,应用时只要传递相应的server,user,password等就行了。import java.io.IOException;import sun.net.*;import ...

weixin_39636245的博客 1364

java 中的 Ftp操作

老婆昨天突然跟我说起用Java做Ftp的操作,懊恼的是,我竟然没有看过,丢人丢人。。。现特意写下文字,督促自己学习:)    对于任何Ftp服务器,都是需要遵循Ftp协议的,所以任何的ftp相关操作都是可以通过ftp协议的相关命令来完成的,对于现在的任何Ftp客户端,实际上都只是在Ftp协议的基础上做了一层外壳,只是外壳做的好坏,功能是否顺手,界面是否美观的问题。对于Java,处理Ftp相关操作可

Bluesky_Leon的专栏 2560

FTP 的Java客户端操作

注:文章皆为个人纪录,可用性请以最终结果为准,若有错还请大佬们指出,谢谢! 温馨提示:(暂不支持在本地的C盘中写入文件) 一、引入依赖 <!-- https://mvnrepository.com/artifact/commons-net/commons-net --> <dependency> <groupId>commons-net</groupId> <artifactId&g

Mr.J 1801

java 使用ftp_Java对FTP的操作

Java操作FTP的功能避免了FTP文件夹不存在的情况,使用了单例避免了多线程导致超过FTP最大连接数的问题FTP工具类需要commons-netpackage util;import java.io.*;import java.util.LinkedList;import java.util.List;import org.apache.commons.net.ftp.FTPClient;imp...

weixin_39613089的博客 601

java ftp协议操作文件

java ftp协议操作文件 package com.cmxcode.servicesgateway.util; import lombok.extern.slf4j.Slf4j; 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.FT

qq_33619502的博客 203

手写一个好用的Java FTP操作工具类

前言 网上百度了很多FTP的java 工具类,发现文章代码都比较久远,且代码臃肿,即使搜到了代码写的还可以的,封装的常用操作方法不全面,于是自己花了半天实现一个好用的工具类。最初想用java自带的FTPClient 的jar 去封装,后来和apache的jar工具包对比后,发现易用性远不如apache,于是决定采用apache的ftp的jar 封装ftp操作类。 之前写过一篇 windows 服务器搭建FTP服务的教程 点击查看 代码展示 pom文件引入依赖关系 commons-net...

洛阳泰山的博客 2487

java操作ftp

JAVA FTPClient FTP简单操作 - 简书

Li_Zhongxin的博客 227

java操作ftp上传下载

文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层,TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。FTP也是一个应用程序,基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。可以使用FTP进行下载和上传。

客官不爱喝酒的博客 1215

FTP的Java操作全面实战

 FTP系列: 在Windows系统上搭建FTP服务器全面总结:https://blog.youkuaiyun.com/haoranhaoshi/article/details/86092630 FTP操作:https://blog.youkuaiyun.com/haoranhaoshi/article/details/86922363 FTP的Java操作全面实战:https://blog.youkuaiyun.com/haora...

haoranhaoshi的博客 1003
上一篇: dom4j操作xml时的乱码与格式化
下一篇: 程序员经典语录
sr2012
博客等级 码龄14年 0粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值