日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java ftp复制文件_如何使用Java将FTP服务器上的文件复制到同一服务器上的目录中?...

發(fā)布時間:2024/9/19 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java ftp复制文件_如何使用Java将FTP服务器上的文件复制到同一服务器上的目录中?... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我正在使用Apache Commons FTP上傳文件。上傳之前,我想檢查服務(wù)器上是否已存在該文件,并將其備份到同一服務(wù)器上的備份目錄中。

有誰知道如何將文件從FTP服務(wù)器復(fù)制到同一服務(wù)器上的備份目錄?

public static void uploadWithCommonsFTP(File fileToBeUpload){

FTPClient f = new FTPClient();

FTPFile backupDirectory;

try {

f.connect(server.getServer());

f.login(server.getUsername(), server.getPassword());

FTPFile[] directories = f.listDirectories();

FTPFile[] files = f.listFiles();

for(FTPFile file:directories){

if (!file.getName().equalsIgnoreCase("backup")) {

backupDirectory=file;

} else {

f.makeDirectory("backup");

}

}

for(FTPFile file: files){

if(file.getName().equals(fileToBeUpload.getName())){

//copy file to backupDirectory

}

}

} catch (IOException e) {

e.printStackTrace();

}

}

編輯代碼: 仍然存在問題,當(dāng)我備份zip文件時,備份的文件已損壞。

有人知道原因嗎?

public static void backupUploadWithCommonsFTP(File fileToBeUpload) {

FTPClient f = new FTPClient();

boolean backupDirectoryExist = false;

boolean fileToBeUploadExist = false;

FTPFile backupDirectory = null;

try {

f.connect(server.getServer());

f.login(server.getUsername(), server.getPassword());

FTPFile[] directories = f.listDirectories();

// Check for existence of backup directory

for (FTPFile file : directories) {

String filename = file.getName();

if (file.isDirectory() && filename.equalsIgnoreCase("backup")) {

backupDirectory = file;

backupDirectoryExist = true;

break;

}

}

if (!backupDirectoryExist) {

f.makeDirectory("backup");

}

// Check if file already exist on the server

f.changeWorkingDirectory("files");

FTPFile[] files = f.listFiles();

f.changeWorkingDirectory("backup");

String filePathToBeBackup="/home/user/backup/";

String prefix;

String suffix;

String fileNameToBeBackup;

FTPFile fileReadyForBackup = null;

f.setFileType(FTP.BINARY_FILE_TYPE);

f.setFileTransferMode(FTP.BINARY_FILE_TYPE);

for (FTPFile file : files) {

if (file.isFile() && file.getName().equals(fileToBeUpload.getName())) {

prefix = FilenameUtils.getBaseName(file.getName());

suffix = ".".concat(FilenameUtils.getExtension(file.getName()));

fileNameToBeBackup = prefix.concat(Calendar.getInstance().getTime().toString().concat(suffix));

filePathToBeBackup = filePathToBeBackup.concat(fileNameToBeBackup);

fileReadyForBackup = file;

fileToBeUploadExist = true;

break;

}

}

// If file already exist on the server create a backup from it otherwise just upload the file.

if(fileToBeUploadExist){

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

f.retrieveFile(fileReadyForBackup.getName(), outputStream);

InputStream is = new ByteArrayInputStream(outputStream.toByteArray());

if(f.storeUniqueFile(filePathToBeBackup, is)){

JOptionPane.showMessageDialog(null, "Backup succeeded.");

f.changeWorkingDirectory("files");

boolean reply = f.storeFile(fileToBeUpload.getName(), new FileInputStream(fileToBeUpload));

if(reply){

JOptionPane.showMessageDialog(null,"Upload succeeded.");

}else{

JOptionPane.showMessageDialog(null,"Upload failed after backup.");

}

}else{

JOptionPane.showMessageDialog(null,"Backup failed.");

}

}else{

f.changeWorkingDirectory("files");

f.setFileType(FTP.BINARY_FILE_TYPE);

f.enterLocalPassiveMode();

InputStream inputStream = new FileInputStream(fileToBeUpload);

ByteArrayInputStream in = new ByteArrayInputStream(FileUtils.readFileToByteArray(fileToBeUpload));

boolean reply = f.storeFile(fileToBeUpload.getName(), in);

System.out.println("Reply code for storing file to server: " + reply);

if(!f.completePendingCommand()) {

f.logout();

f.disconnect();

System.err.println("File transfer failed.");

System.exit(1);

}

if(reply){

JOptionPane.showMessageDialog(null,"File uploaded successfully without making backup." +

"\nReason: There wasn't any previous version of this file.");

}else{

JOptionPane.showMessageDialog(null,"Upload failed.");

}

}

//Logout and disconnect from server

in.close();

f.logout();

f.disconnect();

} catch (IOException e) {

e.printStackTrace();

}

}

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的java ftp复制文件_如何使用Java将FTP服务器上的文件复制到同一服务器上的目录中?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。