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

根目录

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切换工作目录,切来切去的话到最后你都不知道当前工作目录是哪个,笔者就曾经在这里踩过坑,误删文件差点被抓去祭天

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值