A. java 實現ftp上傳如何創建文件夾
這個功能我也剛寫完,不過我也是得益於同行,現在我也把自己的分享給大家,希望能對大家有所幫助,因為自己的項目不涉及到創建文件夾,也僅作分享,不喜勿噴謝謝!
interface:
packagecom.sunline.bank.ftputil;
importjava.io.BufferedInputStream;
importjava.io.BufferedOutputStream;
importorg.apache.commons.net.ftp.FTPClient;
publicinterfaceIFtpUtils{
/**
*ftp登錄
*@paramhostname主機名
*@paramport埠號
*@paramusername用戶名
*@parampassword密碼
*@return
*/
publicFTPClientloginFtp(Stringhostname,Integerport,Stringusername,Stringpassword);
/**
*上穿文件
*@paramhostname主機名
*@paramport埠號
*@paramusername用戶名
*@parampassword密碼
*@paramfpathftp路徑
*@paramlocalpath本地路徑
*@paramfileName文件名
*@return
*/
(Stringhostname,Integerport,Stringusername,Stringpassword,Stringfpath,Stringlocalpath,StringfileName);
/**
*批量下載文件
*@paramhostname
*@paramport
*@paramusername
*@parampassword
*@paramfpath
*@paramlocalpath
*@paramfileName源文件名
*@paramfilenames需要修改成的文件名
*@return
*/
publicbooleandownloadFileList(Stringhostname,Integerport,Stringusername,Stringpassword,Stringfpath,Stringlocalpath,StringfileName,Stringfilenames);
/**
*修改文件名
*@paramlocalpath
*@paramfileName源文件名
*@paramfilenames需要修改的文件名
*/
(Stringlocalpath,StringfileName,Stringfilenames);
/**
*關閉流連接、ftp連接
*@paramftpClient
*@parambufferRead
*@parambuffer
*/
publicvoidcloseFtpConnection(FTPClientftpClient,,BufferedInputStreambuffer);
}
impl:
packagecom.sunline.bank.ftputil;
importjava.io.BufferedInputStream;
importjava.io.BufferedOutputStream;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importorg.apache.commons.net.ftp.FTPClient;
importorg.apache.commons.net.ftp.FTPFile;
importorg.apache.commons.net.ftp.FTPReply;
importcommon.Logger;
{
privatestaticLoggerlog=Logger.getLogger(FtpUtilsImpl.class);
FTPClientftpClient=null;
Integerreply=null;
@Override
publicFTPClientloginFtp(Stringhostname,Integerport,Stringusername,Stringpassword){
ftpClient=newFTPClient();
try{
ftpClient.connect(hostname,port);
ftpClient.login(username,password);
ftpClient.setControlEncoding("utf-8");
reply=ftpClient.getReplyCode();
ftpClient.setDataTimeout(60000);
ftpClient.setConnectTimeout(60000);
//設置文件類型為二進制(避免解壓縮文件失敗)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
//開通數據埠傳輸數據,避免阻塞
ftpClient.enterLocalActiveMode();
if(!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())){
log.error("連接FTP失敗,用戶名或密碼錯誤");
}else{
log.info("FTP連接成功");
}
}catch(Exceptione){
if(!FTPReply.isPositiveCompletion(reply)){
try{
ftpClient.disconnect();
}catch(IOExceptione1){
log.error("登錄FTP失敗,請檢查FTP相關配置信息是否正確",e1);
}
}
}
returnftpClient;
}
@Override
@SuppressWarnings("resource")
(Stringhostname,Integerport,Stringusername,Stringpassword,Stringfpath,Stringlocalpath,StringfileName){
booleanflag=false;
ftpClient=loginFtp(hostname,port,username,password);
BufferedInputStreambuffer=null;
try{
buffer=newBufferedInputStream(newFileInputStream(localpath+fileName));
ftpClient.changeWorkingDirectory(fpath);
fileName=newString(fileName.getBytes("utf-8"),ftpClient.DEFAULT_CONTROL_ENCODING);
if(!ftpClient.storeFile(fileName,buffer)){
log.error("上傳失敗");
returnflag;
}
buffer.close();
ftpClient.logout();
flag=true;
returnflag;
}catch(Exceptione){
e.printStackTrace();
}finally{
closeFtpConnection(ftpClient,null,buffer);
log.info("文件上傳成功");
}
returnfalse;
}
@Override
publicbooleandownloadFileList(Stringhostname,Integerport,Stringusername,Stringpassword,Stringfpath,Stringlocalpath,StringfileName,Stringfilenames){
ftpClient=loginFtp(hostname,port,username,password);
booleanflag=false;
=null;
if(fpath.startsWith("/")&&fpath.endsWith("/")){
try{
//切換到當前目錄
this.ftpClient.changeWorkingDirectory(fpath);
this.ftpClient.enterLocalActiveMode();
FTPFile[]ftpFiles=this.ftpClient.listFiles();
for(FTPFilefiles:ftpFiles){
if(files.isFile()){
System.out.println("=================="+files.getName());
FilelocalFile=newFile(localpath+"/"+files.getName());
bufferRead=newBufferedOutputStream(newFileOutputStream(localFile));
ftpClient.retrieveFile(files.getName(),bufferRead);
bufferRead.flush();
}
}
ftpClient.logout();
flag=true;
}catch(IOExceptione){
e.printStackTrace();
}finally{
closeFtpConnection(ftpClient,bufferRead,null);
log.info("文件下載成功");
}
}
modifiedLocalFileName(localpath,fileName,filenames);
returnflag;
}
@Override
(Stringlocalpath,StringfileName,Stringfilenames){
Filefile=newFile(localpath);
File[]fileList=file.listFiles();
if(file.exists()){
if(null==fileList||fileList.length==0){
log.error("文件夾是空的");
}else{
for(Filedata:fileList){
Stringorprefix=data.getName().substring(0,data.getName().lastIndexOf("."));
Stringprefix=fileName.substring(0,fileName.lastIndexOf("."));
System.out.println("index==="+orprefix+"prefix==="+prefix);
if(orprefix.contains(prefix)){
booleanf=data.renameTo(newFile(localpath+"/"+filenames));
System.out.println("f============="+f);
}else{
log.error("需要重命名的文件不存在,請檢查。。。");
}
}
}
}
}
@Override
publicvoidcloseFtpConnection(FTPClientftpClient,,BufferedInputStreambuffer){
if(ftpClient.isConnected()){
try{
ftpClient.disconnect();
}catch(IOExceptione){
e.printStackTrace();
}
}
if(null!=bufferRead){
try{
bufferRead.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
if(null!=buffer){
try{
buffer.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
publicstaticvoidmain(String[]args)throwsIOException{
Stringhostname="xx.xxx.x.xxx";
Integerport=21;
Stringusername="edwftp";
Stringpassword="edwftp";
Stringfpath="/etl/etldata/back/";
StringlocalPath="C:/Users/Administrator/Desktop/ftp下載/";
StringfileName="test.txt";
Stringfilenames="ok.txt";
FtpUtilsImplftp=newFtpUtilsImpl();
/*ftp.modifiedLocalFileName(localPath,fileName,filenames);*/
ftp.downloadFileList(hostname,port,username,password,fpath,localPath,fileName,filenames);
/*ftp.uploadLocalFilesToFtp(hostname,port,username,password,fpath,localPath,fileName);*/
/*ftp.modifiedLocalFileName(localPath);*/
}
}
B. 如何創建FTP文件夾
通過添加網路位置來FTP文件夾,具體操作請參照以下步驟,演示電腦系統為windows7。
1、在計算機界面空白處點擊右鍵,在右鍵彈出菜單點擊「添加一個網路位置」。
C. 怎麼在FTP建立文件夾
你要在根目錄里增加的。一般是www 或者wwwroot 或者是你域名的文件夾。還有要已bbs blog作為文件夾名,因為有的主機提供商是禁止使用這兩個的。如果還不成功就咨詢下你的服務提供商,看是不是沒有新建文件夾的許可權。
D. 批處理通過ftp在伺服器上新建文件夾和文件
批處理實現你要的功能需要兩個文件
舉例
第一個:
在c盤新建一個文本文件名為 1.txt,寫入以下空行之間的內容
open 192.168.1.241
root
abcde
rmdir 1
mkdir 1
by
其中第一行open後面的地址為你的ftp伺服器的ip
第二行為登錄用戶名,第三行為登錄對應密碼
第四行為要執行的命令,rmdir是刪除名為1的目錄
第五行為要執行的命令,mkdir是新建名為1的目錄
第六行為退出ftp。
注意,你要執行什麼命令,可以在密碼之後,by之前任意添加行。
第二個文件為bat文件:
寫入以下空行之間的內容
ftp -s:1.txt
執行該bat則自動登錄到你指定的ftp伺服器,創建目錄,注意,rmdir是一個刪除的範例,那句可以不要。
如果要新建文件,可在本地新建2.txt後,使用put的方式變通
在1.txt中密碼後,by前加入
asc
put 2.txt
執行bat後就會在伺服器上新建2.txt,asc為指定以文本方式傳送文件,如果是2進制文件,請換成bin
E. 在客戶端中,如何在ftp伺服器上創建文件夾
打開ftp://*.*.*.*,用有寫入許可權的帳戶登陸,右鍵就有創建文件夾,
F. java實現ftp上傳 如何創建文件夾
java 實現ftp上傳的話,有現成的工具包可以使用的,可以直接搜索關鍵字ftp上傳文件,創建文件夾,已經有很多現成的博客可以參考
G. FTP怎麼遠程新建文件夾
將ftp 連上點右鍵新建文件夾即可
或者將文件嘉建好用ftp船上去
H. 如何在FTP里新建文件夾
確定許可權沒有問題?那你試試拉個本地文件夾上去,復制進去個文件夾跟新建個文件夾原理是一樣的
I. 如何在ftp上建立自己的文件夾
如果你有許可權操作ftp的話,那麼就像操作windows一樣簡單。右鍵-新建文件夾。
不然就得求救網路管理員了
J. 如何將ftp訪問變成文件夾形式
自Windows 7以上,默認的FTP打開方式都是瀏覽器了,如果想用文件夾方式(即資源管理器)打開FTP,我個人的建議是先打開一個文件夾,然後在地址欄輸入FTP的地址,就可以用文件夾方式打開了。
如果想修改默認的方式,要在注冊表裡修改(不推薦),步驟如下:
運行regedit打開注冊表,要以管理員運行
定位到以下項:
HKEY_CLASSES_ROOT\ftp\shell\open\command
將右側(默認)後的值修改為C:\Windows\explorer.exe %1,確定
關閉注冊表,重啟電腦。
再次申明:注冊表操作有風險,不建議這個方法。