根目录

FTPClient的根目录为"/"

切换到根目录

ftpClient.changeWorkingDirectory("/"); // 切换到根目录

String dir = ftpClient.printWorkingDirectory(); // 获取当前工作目录

System.out.println(dir); // 打印输出当前工作目录,输出结果为"/"

绝对路径

绝对路径是以/开头的,比如"/AA","/AA/BB","/AA/BB/CC/","/AA/BB/CC/test.txt"等

使用绝对路径的话不受当前工作路径的影响,

比如如下实例代码使用changeWorkingDirectory("/A1/B1")方法切换当前工作路径到/A1/B1文件夹下

但是我们使用ftpClient.listNames("/A1/B2")绝对路径获取/A1/B2文件夹下的文件,并不受当前工作目录的影响

记得绝对路径一定是以/开头的不要写成"A1/B2",这样的话就变成相对路径了,就会受当前路径的影响,相对路径"A1/B2"转化成绝对路径其实就是当前工作目录+相对路径,也就是"/A1/B1/A1/B2"

对于相对路径我们下面部分会再详细说明

public static void main(String[] args) {

try {

FTPClient ftpClient = new FTPClient();

ftpClient.connect(ftpIp, ftpPort);

ftpClient.login(ftpName, ftpPws);

ftpClient.enterLocalPassiveMode();

ftpClient.changeWorkingDirectory("/A1/B1");

System.out.println("当前工作目录:" + ftpClient.printWorkingDirectory());

String[] names = ftpClient.listNames("/A1/B2");

System.out.println("/A1/B2目录下的文件:" + Arrays.toString(names));

} catch (IOException e) {

e.printStackTrace();

}

}

输出结果

当前工作目录:/A1/B1

/A1/B2目录下的文件:[/A1/B2/b21.txt, /A1/B2/b22.txt]

相对路径

相对路径开头没有/

相对路径的绝对路径为当前路径+相对路径

如下实例先把当前工作目录切换到A1,然后再通过changeWorkingDirectory("B1")切换到B1,由于所以传入的是相对路径,所以实际切换后的路径是当前工作路径+B1,也就是/A1/B1

最后再通过changeWorkingDirectory("/A1"),切换回A1目录,注意这时候传的是绝对路径所以不受当前工作目录影响,所以切换后的工作路径是"/A1",而不是"/A1/B1/A1"

public static void main(String[] args) {

try {

FTPClient ftpClient = new FTPClient();

ftpClient.connect(ftpIp, ftpPort);

ftpClient.login(ftpName, ftpPws);

ftpClient.enterLocalPassiveMode();

ftpClient.changeWorkingDirectory("/A1");

System.out.println("当前工作目录:" + ftpClient.printWorkingDirectory());

ftpClient.changeWorkingDirectory("B1");

System.out.println("当前工作目录:" + ftpClient.printWorkingDirectory());

ftpClient.changeWorkingDirectory("/A1");

System.out.println("当前工作目录:" + ftpClient.printWorkingDirectory());

} catch (IOException e) {

e.printStackTrace();

}

}

输出结果为

当前工作目录:/A1

当前工作目录:/A1/B1

当前工作目录:/A1

适用的方法

基本上FTPClient中所有关于文件或文件夹操作的方法都适用绝对路径和相对路径,有多个参数的方法还可以两种方式同时使用,比如rename("B1/test.txt", "/A1/test.txt"),下面列出比较常见的方法

changeWorkingDirectory

listNames

retrieveFile

retrieveFileStream

storeFile

storeFileStream

makeDirectory

rename

总结

绝对路径以"/"开头

相对路径不以"/"开头

相对路径转成绝对路径=当前工作目录 + "/" + 绝对路径

建议能使用绝对路径就尽量不要使用相对路径,因为相对路径你能够一目了然地知道你当前在操作的文件路径,而如果使用相对路径的话很容易出现错误,因为FTP操作中经常会使用changeWorkingDirectory切换工作目录,切来切去的话到最后你都不知道当前工作目录是哪个,笔者就曾经在这里踩过坑,误删文件差点被抓去祭天

java ftp 当前路径_java FTPClient中的相对路径和绝对路径相关推荐

  1. android xml java混合编程_Java学习中注解与多线程,网络编程与XML技术

    本部分内容主要有集合框架及泛型,实用类,输入和输出处理,注解与多线程,网络编程与XML技术.初次学习这部分会感觉很难,主要是概念难于理解,最好是多看看例子,多练习.下面是个人的总结 拉勾IT课小编为大 ...

  2. java获得当前路径_JAVA 取得当前目录的路径/Servlet/class/文件路径/web路径/url地址...

    在写java程序时不可避免要获取文件的路径...总结一下,遗漏的随时补上 1.可以在servlet的init方法里 String path = getServletContext().getRealP ...

  3. java编程中相对路径怎么写_Java编程中的绝对路经和相对路径

    1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如: C:xyz est.txt 代表了test.txt文件的绝对路径.相对路径:相对与某个基 ...

  4. java的成员方法_java编程中的成员方法是什么?

    DIEA 成员方法描述对象所具有的功能或操作,反映对象的行为,是具有某种相对独立功能的程序模块.它与过去所说的子程序.函数等概念相当.一个类或对象可以有多个成员方法,对象通过执行它的成员方法对传来的消 ...

  5. java runnable 异常_JAVA 线程中的异常捕获

    在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked e ...

  6. java linux 当前路径_Java,Linux文件路径

    斜杠和反斜杠 正斜杠,又称左斜杠,符号是"/": 反斜杠,也称右斜杠,符号是"\". 在Unix/Linux中,路径的分隔采用正斜"/",比 ...

  7. java urlencoder 特殊_java URLEncoder 中特殊处理

    URLEncoder类: 用于HTML的form中数据编码的类. 这个类包含将字符串转换为application/x-www-form-urlencoded MIME 格式的静态方法. 如果想了解HT ...

  8. java swing背景_java Swing中添加背景图片(总结)

    在java GUI图形化设计中,Swing组件添加背景图片主要有两中情况:1,在Jpanl面板中添加背景图片,2,在jLable中添加背景图片 首先介绍一种最巧妙的背景图片添加方法, 1.利用JLab ...

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

    最近看到几篇关于java中操作ftp的文章,所以想写一个总结贴,标记一下,方便以后应用. 首先,我们可以应用java中的ftp库,java中提供了一个ftpclient的类,提供了很多操作ftp的方法 ...

最新文章

  1. java使用ssh连接Linux并执行命令
  2. 概率分布函数的关系框架
  3. java exception e抛异常_抛出的异常在上层catch到,但是e.getMessage()为NULL,为什么会这样?...
  4. 如何修改Series和DataFrame类型中的元素值_Redis的HSCAN命令中COUNT参数的失效场景
  5. MySQL(10)数据库实现高可用架构之MHA
  6. 条件随机场 python_如何直观地理解条件随机场,并通过PyTorch简单地实现
  7. PHP 二分查找(详细)
  8. Java与Cuda混合编程
  9. 在vb中使用Iphlpapi.dll获取网络信息(下)
  10. 浅谈 voip 未來企業通信
  11. IIS7.5使用web.config设置伪静态的二种方法(转)
  12. 华硕主板装系统蓝屏_华硕笔记本电脑重装系统后蓝屏怎么办
  13. 期货十三篇 第九篇 心态篇
  14. Hive之数据类型、查询操作
  15. Virtual Box报错VT-x is not available (VERR_VMX_NO_VMX)--大踩坑(二)
  16. 今日头条校招真题——异或
  17. arduino入门教程书籍推荐,arduino从入门到精通
  18. 配置文件导入服务器什么意思,配置服务器需要什么意思
  19. 一分钟搞懂中小型企业网络架构
  20. 第2章 中小型网络系统总体规划与设计

热门文章

  1. 【西川善司】3D图形的概念和渲染管线(5回完)
  2. pyqt实战:单位换算实时显示小工具
  3. linux top 命令可视化_top——交互界面使用图解
  4. linux定时任务crontab每月,linux centos 计划任务 定时任务 crontab
  5. 为何单片机程序不用加载到RAM
  6. 计算机桌面图标靠右,使桌面图标靠右排列
  7. OSChina 周三乱弹 ——总结七夕“小蝌蚪找妈妈。”
  8. mysql 5.0 utf8mb4_MySQL 5.5将字符集从utf8升级为utf8mb4
  9. 冬察冬见·全视角再议晋升
  10. 华为荣耀长按出现第三方信息及服务器,华为荣耀6手机常见问题要领.pdf