當前位置:首頁 » 文件管理 » java刪除ftp上的文件

java刪除ftp上的文件

發布時間: 2022-12-21 07:06:09

java ftpClient 刪除文件 deleteFile,文件目錄多層時會出錯,文件目錄小於等於4層可以正常刪除

中午也遇到調用ftp.deleteFile("文件全路徑")刪除文件失敗;

建議:1.下文件路徑是否正確(包括路徑需從根目錄開始 /)
2.文件名稱若包含中文(new string(path.getBytes("GBK"),"ISO-8859-1"))注意編碼問題
主要發現:題主說的用命令創建的文件無法刪除問題!自己命令創建的txt文件是可以刪除的;不知道題主刪除不了的是什麼文件;
另:發現 用這個函數刪除文件時;ftp上文件已被刪除但返回false 這個問題不知誰有遇到,還請不吝賜教

❷ 知道怎麼在本機上用java 代碼刪除伺服器上的文件

import java.io.InputStream;
import java.io.PrintStream;
import org.apache.commons.net.telnet.TelnetClient;

/**
* 利用apache net 開源包,使用telnet方式獲取AIX主機信息
* @version 1.2
*/
public class NetTelnet {

// Telnet對象
private TelnetClient telnet = new TelnetClient();

private InputStream in;

private PrintStream out;

// 提示符。具體請telnet到AIX主機查看
private char prompt = '#';

// telnet埠
private String port;

// 用戶
private String user;

// 密碼
private String password;

// IP地址
private String ip;

public NetTelnet() {

try {
// AIX主機IP
this.ip = "219.243.12.10";
this.password = "05933663007";
this.user = "administrator";
this.port = "23";
telnet.connect(ip, Integer.parseInt(port));
System.out.println("開始獲取輸入流...");
in = telnet.getInputStream();
out = new PrintStream(telnet.getOutputStream());
// 登錄
/* readUntil("login: ");
write(user);
readUntil("Password: ");
write(password);
readUntil(prompt + " ");*/
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 讀取分析結果
*
* @param pattern
* @return
*/
public String readUntil(String pattern) {
try {
char lastChar = pattern.charAt(pattern.length() - 1);
StringBuffer sb = new StringBuffer();

char ch = (char) in.read();
while (true) {

sb.append(ch);
if (ch == lastChar) {
if (sb.toString().endsWith(pattern)) {
return sb.toString();
}
}
ch = (char) in.read();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

/**
* 寫
*
* @param value
*/
public void write(String value) {
try {
out.println(value);
out.flush();

} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 向目標發送命令字元串
*
* @param command
* @return
*/
public String sendCommand(String command) {
try {
write(command);// 執行刪除的命令 rm -rf *.*
return readUntil(prompt + " ");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

/**
* 關閉連接
*
*/
public void disconnect() {
try {
telnet.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
try {
System.out.println("開始執行telnet......");
NetTelnet telnet = new NetTelnet();
// 通過aix的命令「查找主機名稱」獲取數據
// 命令是 "hostname"
// 不熟悉命令的參考<<AIX網路管理手冊>>
System.out.println("開始發送hostname命令");
String result = telnet.sendCommand("hostname");
System.out.println("顯示結果");
System.out.println(result);
// 最後一定要關閉
telnet.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}

❸ java FTPClient如何刪除遠程伺服器端的文件夾及其子文件夾及其內容!

假如文件夾裡面有文件的話,ftpclient根本刪除不了文件夾,不像其他api可以自動遞歸刪除,所以得先刪除文件夾裡面的文件,然後在刪除文件夾,
刪除之前記得改變下工作目錄 fileName是dirName裡面的文件
ftpClient.changeWorkingDirectory(remoteDir+dirName)

刪除文件命令:ftpClient.deleteFile(fileName);
刪除完文件後更改目錄ftpClient.changeWorkingDirectory(remoteDir)
刪除文件夾命令:ftpClient.removeDirectory(dirName);

❹ java 刪除ftp上的圖片,使用ftpClient.sendServer("DELE "+newname+"\r\n"),可是最後ftp上剩餘一個0位元組

使用方法不對吧,你看看FTPClient這個類,提供了deleteFile方法,應該是用這個進行刪除文件的
至於用命令的方式刪除,你要看哈FTPCommand這個類裡面的常量命令,有DELE和DELETE兩個,我沒用過命令的方式,不知道這兩個的區別,需要你自己試了

❺ java ftp上傳時斷網,文件損壞

以二進制流上傳,然後實現斷點續傳。

/**
* 上傳文件到FTP伺服器,支持斷點續傳
* @param local 本地文件名稱,絕對路徑
* @param remote 遠程文件路徑,使用/home/directory1/subdirectory/file.ext 按照linux上的路徑指定方式,支持多級目錄嵌套,支持遞歸創建不存在的目錄結構
* @return 上傳結果
* @throws IOException
*/
public UploadStatus upload(String local,String remote) throws IOException{
FTPClient ftpClient = new FTPClient();
//設置PassiveMode傳輸
ftpClient.enterLocalPassiveMode();
//設置以二進制流的方式傳輸
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
UploadStatus result;
//對遠程目錄的處理
String remoteFileName = remote;
if(remote.contains("/")){
remoteFileName = remote.substring(remote.lastIndexOf("/")+1);
String directory = remote.substring(0,remote.lastIndexOf("/")+1);
if(!directory.equalsIgnoreCase("/")&&!ftpClient.changeWorkingDirectory(directory)){
//如果遠程目錄不存在,則遞歸創建遠程伺服器目錄
int start=0;
int end = 0;
if(directory.startsWith("/")){
start = 1;
}else{
start = 0;
}
end = directory.indexOf("/",start);
while(true){
String subDirectory = remote.substring(start,end);
if(!ftpClient.changeWorkingDirectory(subDirectory)){
if(ftpClient.makeDirectory(subDirectory)){
ftpClient.changeWorkingDirectory(subDirectory);
}else {
System.out.println("創建目錄失敗");
return UploadStatus.Create_Directory_Fail;
}
}

start = end + 1;
end = directory.indexOf("/",start);

//檢查所有目錄是否創建完畢
if(end <= start){
break;
}
}
}
}

//檢查遠程是否存在文件
FTPFile[] files = ftpClient.listFiles(remoteFileName);
if(files.length == 1){
long remoteSize = files[0].getSize();
File f = new File(local);
long localSize = f.length();
if(remoteSize==localSize){
return UploadStatus.File_Exits;
}else if(remoteSize > localSize){
return UploadStatus.Remote_Bigger_Local;
}

//嘗試移動文件內讀取指針,實現斷點續傳
InputStream is = new FileInputStream(f);
if(is.skip(remoteSize)==remoteSize){
ftpClient.setRestartOffset(remoteSize);
if(ftpClient.storeFile(remote, is)){
return UploadStatus.Upload_From_Break_Success;
}
}

//如果斷點續傳沒有成功,則刪除伺服器上文件,重新上傳
if(!ftpClient.deleteFile(remoteFileName)){
return UploadStatus.Delete_Remote_Faild;
}
is = new FileInputStream(f);
if(ftpClient.storeFile(remote, is)){
result = UploadStatus.Upload_New_File_Success;
}else{
result = UploadStatus.Upload_New_File_Failed;
}
is.close();
}else {
InputStream is = new FileInputStream(local);
if(ftpClient.storeFile(remoteFileName, is)){
result = UploadStatus.Upload_New_File_Success;
}else{
result = UploadStatus.Upload_New_File_Failed;
}
is.close();
}
return result;
}

❻ java ftp刪除功能唯獨刪除不掉pdf文件

許可權是否正確 文件屬性是否正確

~~~~~~~~~~~

❼ java刪除linux下ftp文件的問題

這樣是不能刪除文件的,因為ftp文件許可權會限制java代碼的執行,如果你想實現這樣的功能,可以在ftp伺服器上面執行java代碼,路徑指定伺服器的路徑,不要使用ftp或者http之類的協議,然後給java許可權或者設置文件許可權為777,這樣就可以執行了。

❽ JAVA怎麼實現刪除遠程FTP伺服器上的某一文件

一個JAVA 實現FTP功能的代碼,包括了伺服器的設置模塊,並包括有上傳文件至FTP的通用方法、下載文件的通用方法以及刪除文件、在ftp伺服器上傳文件夾、檢測文件夾是否存在等,裡面的有些代碼對編寫JAVA文件上傳或許有參考價值,

(1):Java FTP主文件代碼:

package ftpDemo;

import java.io.DataOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import sun.net.TelnetInputStream;

import sun.net.TelnetOutputStream;

import sun.net.ftp.FtpClient;

public class ftpUtil {

// 上傳文件至FTP通用方法

public static void upLoadFileFtp(KmConfig kmConfig,InputStream is, String fileName){

try {

String ftpHost = kmConfig.getFtpHost();

int port = kmConfig.getFtpPort();

String userName = kmConfig.getFtpUser();

String passWord = kmConfig.getFtpPassword();

String path = kmConfig.getFtpPath();

FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost為FTP伺服器的IP地址,port為FTP伺服器的登陸埠,ftpHost為String型,port為int型。

ftpClient.login(userName, passWord);// userName、passWord分別為FTP伺服器的登陸用戶名和密碼

ftpClient.binary();

ftpClient.cd(path);// path為FTP伺服器上保存上傳文件的路徑。

TelnetOutputStream telnetOut = ftpClient.put(fileName);// fileName為上傳的文件名

DataOutputStream dataOut = new DataOutputStream(telnetOut);

byte buffer[] = new byte[ * ];

int count = ;

while ((count = is.read(buffer)) != -) {

dataOut.write(buffer, , count);

}

telnetOut.close();

dataOut.close();

ftpClient.closeServer();

} catch (Exception e) {

System.out.println("上傳文件失敗!請檢查系統FTP設置,並確認FTP服務啟動");

}

}

// 刪除文件至FTP通用方法

public static void deleteFileFtp(KmConfig kmConfig,String fileName){

try {

String ftpHost = kmConfig.getFtpHost();

int port = kmConfig.getFtpPort();

String userName = kmConfig.getFtpUser();

String passWord = kmConfig.getFtpPassword();

String path = kmConfig.getFtpPath();

FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost為FTP伺服器的IP地址,port為FTP伺服器的登陸埠,ftpHost為String型,port為int型。

ftpClient.login(userName, passWord);// userName、passWord分別為FTP伺服器的登陸用戶名和密碼

ftpClient.binary();

ftpClient.cd(path);// path為FTP伺服器上保存上傳文件的路徑。

try {

ftpClient.sendServer("dele " + fileName + " ");

} catch (Exception e) {

System.out.println("刪除文件失敗!請檢查系統FTP設置,並確認FTP服務啟動");

}

ftpClient.closeServer();

} catch (Exception e) {

System.out.println("刪除文件失敗!");

}

}

// 下載ftp文件

public static void downloadFileFtp(KmConfig kmConfig,String fileName, String clientFileName, OutputStream outputStream){

try {

String ftpHost = kmConfig.getFtpHost();

int port = kmConfig.getFtpPort();

String userName = kmConfig.getFtpUser();

String passWord = kmConfig.getFtpPassword();

String path = kmConfig.getFtpPath();

FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost為FTP伺服器的IP地址,port為FTP伺服器的登陸埠,ftpHost為String型,port為int型。

ftpClient.login(userName, passWord);// userName、passWord分別為FTP伺服器的登陸用戶名和密碼

ftpClient.binary();

ftpClient.cd(path);// path為FTP伺服器上保存上傳文件的路徑。

try {

TelnetInputStream in = ftpClient.get(fileName);

byte[] bytes = new byte[];

int cnt=;

while ((cnt=in.read(bytes,,bytes.length)) != -) {

outputStream.write(bytes, , cnt);

}

outputStream.close();

in.close();

} catch (Exception e) {

ftpClient.closeServer();

e.printStackTrace();

}

ftpClient.closeServer();

} catch (Exception e) {

System.out.println("下載文件失敗!請檢查系統FTP設置,並確認FTP服務啟動");

}

}

//在ftp伺服器上傳件文件夾

public boolean createDir(String path,FtpClient ftpClient) throws Exception{

//進入到home文件夾下

ftpClient.cd("/home");

//創建遠程文件夾

//遠程命令包括

//USER PORT RETR ALLO DELE SITE XMKD CDUP FEAT<br>

// PASS PASV STOR REST CWD STAT RMD XCUP OPTS<br>

// ACCT TYPE APPE RNFR XCWD HELP XRMD STOU AUTH<br>

// REIN STRU SMNT RNTO LIST NOOP PWD SIZE PBSZ<br>

// QUIT MODE SYST ABOR NLST MKD XPWD MDTM PROT<br>

// 在伺服器上執行命令,如果用sendServer來執行遠程命令(不能執行本地FTP命令)的話,所有FTP命令都要加上/r/n<br>

// ftpclient.sendServer("XMKD /test/bb/r/n"); //執行伺服器上的FTP命令<br>

// ftpclient.readServerResponse一定要在sendServer後調用<br>

// nameList("/test")獲取指目錄下的文件列表<br>

// XMKD建立目錄,當目錄存在的情況下再次創建目錄時報錯<br>

// XRMD刪除目錄<br>

// DELE刪除文件<br>

//通過遠程命令 穿件一個files文件夾

ftpClient.sendServer("MKD "+ path + " ");

//這個方法必須在 這兩個方法中間調用 否則 命令不管用

ftpClient.binary();

ftpClient.readServerResponse();

return false;

}

/**

* 檢查文件夾是否存在

* @param dir

* @param ftpClient

* @return

*/

public boolean isDirExist(String dir, FtpClient ftpClient) {

try {

ftpClient.cd(dir);

} catch (Exception e) {

return false;

}

return true;

}

}

(2):KmConfig.java代碼如下:定義FTP伺服器參數,包括登錄的用戶名密碼之類的。

package ftpDemo;

public class KmConfig {

//主機ip

private String FtpHost = "";

//埠號

private int FtpPort;

//ftp用戶名

private String FtpUser = "";

//ftp密碼

private String FtpPassword = "";

//ftp中的目錄

private String FtpPath = "";

public String getFtpHost() {

return FtpHost;

}

public void setFtpHost(String ftpHost) {

FtpHost = ftpHost;

}

public int getFtpPort() {

return FtpPort;

}

public void setFtpPort(int ftpPort) {

FtpPort = ftpPort;

}

public String getFtpUser() {

return FtpUser;

}

public void setFtpUser(String ftpUser) {

FtpUser = ftpUser;

}

public String getFtpPassword() {

return FtpPassword;

}

public void setFtpPassword(String ftpPassword) {

FtpPassword = ftpPassword;

}

public String getFtpPath() {

return FtpPath;

}

public void setFtpPath(String ftpPath) {

FtpPath = ftpPath;

}

}

(3):下面是測試代碼:

❾ java怎麼解析通聯ftp文件

public class FtpClientUtil {
FtpClient ftpClient;
private String server;
private int port;
private String userName;
private String userPassword;

public FtpClientUtil(String server,int port,String userName,String userPassword)
{
this.server=server;
this.port=port;
this.userName=userName;
this.userPassword=userPassword;
}
/**
* 鏈接到伺服器
* @return
*/
public boolean open()
{
if(ftpClient!=null&&ftpClient.serverIsOpen())
return true;
try
{
ftpClient= new FtpClient();
ftpClient.openServer(server,port);
ftpClient.login(userName, userPassword);
ftpClient.binary();
return true;
}
catch(Exception e)
{
e.printStackTrace();
ftpClient=null;
return false;
}
}

public boolean cd(String dir){
boolean f = false;
try {
ftpClient.cd(dir);
} catch (IOException e) {
Logs.error(e.toString());
return f;
}
return true;
}

/**
* 上傳文件到FTP伺服器
* @param localPathAndFileName 本地文件目錄和文件名
* @param ftpFileName 上傳後的文件名
* @param ftpDirectory FTP目錄如:/path1/pathb2/,如果目錄不存在回自動創建目錄
* @throws Exception
*/
public boolean upload(String localDirectoryAndFileName,String ftpFileName,String ftpDirectory)throws Exception {
if(!open())
return false;
FileInputStream is=null;
TelnetOutputStream os=null;
try
{
char ch = ' ';
if (ftpDirectory.length() > 0)
ch = ftpDirectory.charAt(ftpDirectory.length() - 1);
for (; ch == '/' || ch == '\\'; ch = ftpDirectory.charAt(ftpDirectory.length() - 1))
ftpDirectory = ftpDirectory.substring(0, ftpDirectory.length() - 1);

int slashIndex = ftpDirectory.indexOf(47);
int backslashIndex = ftpDirectory.indexOf(92);
int index = slashIndex;
String dirall = ftpDirectory;
if (backslashIndex != -1 && (index == -1 || index > backslashIndex))
index = backslashIndex;
String directory = "";
while (index != -1) {
if (index > 0) {
String dir = dirall.substring(0, index);
directory = directory + "/" + dir;
ftpClient.sendServer("XMKD " + directory + "\r\n");
ftpClient.readServerResponse();
}
dirall = dirall.substring(index + 1);
slashIndex = dirall.indexOf(47);
backslashIndex = dirall.indexOf(92);
index = slashIndex;
if (backslashIndex != -1 && (index == -1 || index > backslashIndex))
index = backslashIndex;
}
ftpClient.sendServer("XMKD " + ftpDirectory + "\r\n");
ftpClient.readServerResponse();

os = ftpClient.put(ftpDirectory + "/"
+ ftpFileName);
File file_in = new File(localDirectoryAndFileName);
is = new FileInputStream(file_in);
byte bytes[] = new byte[1024];
int i;
while ((i = is.read(bytes)) != -1)
os.write(bytes, 0, i);
//清理垃圾

return true;
}
catch(Exception e)
{
e.printStackTrace();
return false;
}
finally
{
if (is != null)
is.close();
if (os != null)
os.close();
}
}
/**
* 從FTP伺服器上下載文件並返回下載文件長度
* @param ftpDirectoryAndFileName
* @param localDirectoryAndFileName
* @return
* @throws Exception
*/
public long download(String ftpDirectoryAndFileName,String localDirectoryAndFileName)throws Exception
{
long result = 0;
if(!open())
return result;
TelnetInputStream is = null;
FileOutputStream os = null;
try
{
is = ftpClient.get(ftpDirectoryAndFileName);
java.io.File outfile = new java.io.File(localDirectoryAndFileName);
os = new FileOutputStream(outfile);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1)
{
os.write(bytes, 0, c);
result = result + c;
}
}
catch (Exception e)
{
throw e;
}
finally
{
if (is != null)
is.close();
if (os != null)
os.close();

}
return result;
}
/**
* 返回FTP目錄下的文件列表
* @param ftpDirectory
* @return
*/
public List<String> getFileNameList(String ftpDirectory)
{
List<String> list = new ArrayList<String>();
if(!open())
return list;
try
{
DataInputStream dis = new DataInputStream(ftpClient.nameList(ftpDirectory));
String filename = "";
while((filename=dis.readLine())!=null)
{
list.add(filename);
}
} catch (Exception e)
{
e.printStackTrace();
}
return list;
}
/**
* 刪除FTP上的文件
* @param ftpDirAndFileName
*/
public boolean deleteFile(String ftpDirAndFileName)
{
if(!open())
return false;
ftpClient.sendServer("DELE "+ftpDirAndFileName+"\r\n");
return true;
}
/**
* 刪除FTP目錄
* @param ftpDirectory
*/
public boolean deleteDirectory(String ftpDirectory)
{
if(!open())
return false;
ftpClient.sendServer("XRMD "+ftpDirectory+"\r\n");
return true;
}
/**
* 關閉鏈接
*/
public void close()
{
try
{
if(ftpClient!=null&&ftpClient.serverIsOpen())
ftpClient.closeServer();
}catch(Exception e)
{

❿ Java怎麼均衡訪問多台ftp伺服器

多次需要把文件上傳到單獨的伺服器,而程序是在單獨的伺服器上部署的,在進行文件操作的時候就需要跨伺服器進行操作包括:文件上傳、文件下載、文件刪除等。跨伺服器文件操作一般是需要FTP協議和SFTP協議兩種,現在就通過Java實現FTP協議的文件上傳。要實現FTP操作文件需要引入jar包: commons-net-1.4.1.jar

參考資料來源:網路貼吧

熱點內容
易語言gdi源碼 發布:2025-08-18 13:06:05 瀏覽:781
iphone5s軟體緩存 發布:2025-08-18 12:39:37 瀏覽:148
QQ推薦上傳 發布:2025-08-18 12:38:51 瀏覽:860
qq忘記密保怎麼找回密碼 發布:2025-08-18 12:38:18 瀏覽:72
python字元串類型轉換 發布:2025-08-18 12:35:54 瀏覽:399
ofdm信道估計演算法 發布:2025-08-18 12:35:09 瀏覽:733
指數競猜源碼 發布:2025-08-18 12:29:26 瀏覽:698
天龍八部莫愁腳本官網 發布:2025-08-18 12:14:19 瀏覽:862
合資車為什麼配置不高 發布:2025-08-18 12:09:36 瀏覽:76
銀行的六位密碼有多少種組合 發布:2025-08-18 12:06:27 瀏覽:397