重命名 ftp 文件夹 Java 中的文件时出错
Error while Rename file in ftp folder Java
以下是我读取文件并在之后重命名的代码。我正在使用 apache commons.net 3.0.1
.
client.connect(localhost);
boolean login = client.login("username", "password");
if(login){
System.out.println("login successful");
boolean chdir = client.changeWorkingDirectory("/home/folder1/child/");
String url = client.printWorkingDirectory(); // EDIT
FTPFile[] result = client.listFiles(url, filter);
if (result != null && result.length > 0) {
for (FTPFile aFile : result) {
try{
String filename = aFile.getName();
InputStream is= client.retrieveFileStream(filename);
br = new BufferedReader(new InputStreamReader(is));
while((line = br.readLine()) != null){
System.out.println("the line is"+line);
}
}
finally{
if(br!=null){
try{
br.close();
String oldFilename =url + "/" +aFile.getName();
String newFilename = "PRO"+aFile.getName();
boolean rename = client.rename(oldFilename, newFilename);
if(rename){
System.out.println("renamed");
}
else{
System.out.println("Error in renaming");
}
}
文件未重命名且程序打印
error in renaming files (cz boolean rename = false).
我参考了不同的例子。但似乎都显示出同样的问题。
过滤后选择文件并读取,没有任何问题。
如果有人能指出我在这里做错了什么,那将非常有帮助。
这里的url
是String url = client.printWorkingDirectory();
相对路径和绝对路径我都试过了。并且只给出 oldFilename
的完整路径,只给出 newFilename
的文件名。两者均无效。
编辑
在更改目录之前,url 将是 /
,即根目录。
更改目录后,url 将变为 /home/folder1/child/
。这是文件所在的位置。
InputStream retrieveFileStream(String remote)
:这个方法return是一个InputStream
,我们可以用它从远程文件中读取字节。这种方法使我们能够更好地控制如何读取和写入数据。但是使用这个方法有两个要点:
之后必须调用方法 completePendingCommand()
以完成文件传输并检查其 return 值以验证下载是否确实成功完成。
boolean success = ftpclient.completePendingCommand();
if (success){
System.out.println("File #2 has been downloaded successfully.");
}
我们必须显式关闭 InputStream。
is.close(); //is = InputStream
以下是我读取文件并在之后重命名的代码。我正在使用 apache commons.net 3.0.1
.
client.connect(localhost);
boolean login = client.login("username", "password");
if(login){
System.out.println("login successful");
boolean chdir = client.changeWorkingDirectory("/home/folder1/child/");
String url = client.printWorkingDirectory(); // EDIT
FTPFile[] result = client.listFiles(url, filter);
if (result != null && result.length > 0) {
for (FTPFile aFile : result) {
try{
String filename = aFile.getName();
InputStream is= client.retrieveFileStream(filename);
br = new BufferedReader(new InputStreamReader(is));
while((line = br.readLine()) != null){
System.out.println("the line is"+line);
}
}
finally{
if(br!=null){
try{
br.close();
String oldFilename =url + "/" +aFile.getName();
String newFilename = "PRO"+aFile.getName();
boolean rename = client.rename(oldFilename, newFilename);
if(rename){
System.out.println("renamed");
}
else{
System.out.println("Error in renaming");
}
}
文件未重命名且程序打印
error in renaming files (cz boolean rename = false).
我参考了不同的例子。但似乎都显示出同样的问题。 过滤后选择文件并读取,没有任何问题。
如果有人能指出我在这里做错了什么,那将非常有帮助。
这里的url
是String url = client.printWorkingDirectory();
相对路径和绝对路径我都试过了。并且只给出 oldFilename
的完整路径,只给出 newFilename
的文件名。两者均无效。
编辑
在更改目录之前,url 将是 /
,即根目录。
更改目录后,url 将变为 /home/folder1/child/
。这是文件所在的位置。
InputStream retrieveFileStream(String remote)
:这个方法return是一个InputStream
,我们可以用它从远程文件中读取字节。这种方法使我们能够更好地控制如何读取和写入数据。但是使用这个方法有两个要点:
之后必须调用方法 completePendingCommand()
以完成文件传输并检查其 return 值以验证下载是否确实成功完成。
boolean success = ftpclient.completePendingCommand();
if (success){
System.out.println("File #2 has been downloaded successfully.");
}
我们必须显式关闭 InputStream。
is.close(); //is = InputStream