Eclipse中Ant利用Ftp上传或下载文件
如何使用eclipse导入文件
如何使用eclipse导入文件Eclipse是一种功能强大的集成开发环境(IDE),广泛应用于Java 开发中。
使用Eclipse导入文件是一项基本操作,本文将介绍如何使用Eclipse导入文件。
第一步:打开Eclipse首先,打开Eclipse开发环境。
如果你已经有一个Eclipse的工作空间,可以直接打开该工作空间;否则,可以创建一个新的工作空间。
第二步:创建或打开项目在Eclipse中,你可以创建一个新的Java项目并命名,或者打开已经存在的项目。
选择适合你需求的选项,并确认项目已经正确创建或打开。
第三步:选择导入文件在导入文件之前,请确保你已经找到要导入的文件位置。
在Eclipse 的导航菜单中,点击"File" -> "Import"。
第四步:选择导入方式在弹出的导入窗口中,选择你要导入的文件类型。
例如,如果你要导入Java源代码文件,选择"General" -> "File System"。
第五步:浏览文件位置在导入窗口中,点击"Browse"按钮来浏览你要导入的文件所在的位置。
选择文件并点击"Open"按钮。
第六步:选择目标位置在导入窗口的右侧,选择要将文件导入到的目标位置。
你可以选择已存在的项目或创建新的文件夹。
第七步:选择导入的文件在导入窗口的左侧,会显示你所选择的文件夹中的文件列表。
选择你要导入的文件,并点击"Finish"按钮。
第八步:完成导入Eclipse将会开始将你选择的文件导入到你选择的目标位置。
这个过程可能需要一些时间,具体取决于文件的大小和数量。
第九步:检查导入结果导入完成后,你可以在Eclipse的项目资源管理器中查看导入的文件。
确保文件已经成功导入,并可以在你的项目中使用。
总结:本文介绍了如何使用Eclipse导入文件。
Delphi客户端通过FTP服务器上传或下载文件或图片方法
Delphi客户端通过FTP服务器上传或下载文件或图片方法Delphi客户端通过FTP服务器上传或下载文件或图片方法首先在服务器端建立FTP服务器,网上有这种类型的软件,安装好后,在客户端建立服务器连接,然后再上传或下载文件或图片。
一、服务器连接procedure TForm1.ConnectButtonClick(Sender: TObject);beginif not IdFTP1.Connected then //如果与服务器断开连接begintry/doc/c312652032.html,ername:=UserI DEdit.Text;IdFTP1.Password:=PasswordEdit.Text;IdFTP1.Host:=FtpServerEdit.Text;IdFTP1.Connect; //Connect;Except //异常处理Application.MessageBox('服务器连接失败!','智博软件');end;ConnectButton.Enabled:=true;if IdFTP1.Connected thenbeginConnectButton.Caption:='断开';DebugListBox.Items.Add('主机名为:'+IdFTP1.Host);DebugListBox.Items.Add('连接成功');ConnectButton.Default:=false;end;endelsetryIdFTP1.Quit; //关闭客户端与服务器端的连接finallyConnectButton.Caption:='连接';DebugListBox.Items.Add('连接失败'); ConnectButton.Enabled:=true;ConnectButton.Default:=true;end;end;二、文件或图片上传Procedure TFrmMain.UploadFileCleck(Sender:TObject); varFileName : string;Item : TListItem;SendFileItem : TListItem;beginif not FTPClient.Connected thenexit;if ListViewLocalFile.Selected =nil thenexit;Item :=ListViewLocalFile.Selected; ListViewSendFile.Clear;//处理所有选中文件while Item <>nil dobeginSendFileItem := ListViewSendFile.Items.Add; SendFileItem.Caption := Item.Caption; //文件名SendFileItem.SubItems.Add(Item.SubItems[1]); //文件大小SendFileItem.SubItems.Add(LocaLPath); //本地路径SendFileItem.SubItems.Add('==>'); //图示SendFileItem.SubItems.Add(RemotePath); //远程路径SendFileItem.SubItems.Add(''); //状态//下一个选中的项目Item:=ListViewLocalFile.GetNextItem(Item,sdAll,[isSelected]);end;ListViewSendFile.Refresh; //刷新传送文件列表//传送文件ListViewLocalFile.Enabled :=false;DriveComboBox1.Enabled:=false;ListViewRemoteFile.Enabled:=False;IsTransFerring:=True;try//处理所有要传送的文件while ListViewSendFile.Items.Count>0 dobeginFileName:=ListViewSendFile.Item[0].Caption; //文件名ListViewSendFile.Item[0].SubItems[4]:='正在上传...';FTPClient.Put(LocalPath+'\'+FileName); //上传DisplayRemoteFileList();ListViewSendFile.items[0].Delect; //传送完毕,删除待传送文件列表ListViewSendFile.Refresh;end;//设置相关控件是否可用ListViewLocalFile.Enabled:=True;DriveComboBox1.Enabled:=True;ListVieewRemoteFile.Enabled:=True;IsTransferring:=False;exceptListViewSendFile.Items[0].SubItems[4]:='上传错误!';MessageDlg('上传文件发生错误!',mtError,[mbyes],0);//设置相关控件是否可用ListViewLocalFile.Enabled:=True;DriveCombBox1.Enabled:=True;ListViewRemoteFile.Enabled:=True;IsTransferring:=False; //没有传送状态end;end;三、文件或图片下载procedure TFrmMain.DownloadFileClick(Sender:TObject);varFileName :String;Item ,SendFileItem : TListItem;beginif not FTPClient.Connected Then //没有连接到服务器,退出exit;if ListViewRemoteFile.Selected; //得到选中的文件ListViewSendFile.Clear; //清空要传送的文件列表//处理所有选中的文件While Item <> nil dobeginSendFileItem :=ListViewSendFile.Items.Add; //增加到列表//列表项赋值SendFileItem.Caption := Item.Caption; //文件名SendFileItem.SubItems.Add(Item.SubItems[1]); //文件大小SendFileItem.SubItems.Add(LocaLPath); //本地路径SendFileItem.SubItems.Add('<=='); //图示SendFileItem.SubItems.Add(RemotePath); //远程路径SendFileItem.SubItems.Add('');//下一个选中的项目Item:=ListViewRemoteFile.GetNextItem(Item,sdAll,[isSelected]);end;ListViewSendFile.Refresh; //刷新传送文件列表//传送文件ListViewRemoteFile.Enabled:=false; //禁止操作相关控件IsTransferring:=True; //设置正在传送try//处理所有要传送的文件while ListViewSendFile.Items.Count >0 dobeginFileName := ListViewSendFile.Items[0].Caption; //文件名ListViewSendFile.Items[0].SubItems[4]:='正在下载...';ListViewSendFile.Refresh; //刷新传送文件列表if FileExists(FileName) then //判断文件是否存在beginif MessageDlg('文件己存在,继续下载吗?',mtConfirmation,[mbYes,mbNo],0)=mrYes thenFTPClient.Get(FileName,LocalPath+'\'+FileName,false,true) //续传elseFTPClient.Get(FileName,LocalPath+'\'+FileName,true,False); //覆盖endelseFTPClient.Get(FileName,LocalPath+'\'+FileName,false); //下载ListViewSendFile.items[0].Delect; //传送完毕,删除待传送文件列表ListViewSendFile.Refresh; //刷新待传送列表DisplayLocalFileList(); //刷新本地文件列表end;ListViewRemoteFile.Enabled:=true; IsTransferring:=False; //没有传送状态exceptListViewSendFile.Items[0].SubItems[4]:='下载错误'; ListViewSendFile.Refresh; //刷新待传送文件列表MessageDlg('下载文件发生错误!',mtError,[nbYes],0); ListViewRemoteFile.Enabled:=True; IsTransferring:=False; //没有传送状态end;end;以上代码在Delphi7中调试通过。
ftp文件操作类(上传、下载、删除、创建、重命名、获取目录中的所有文件)
ftp⽂件操作类(上传、下载、删除、创建、重命名、获取⽬录中的所有⽂件)ftp⽂件操作类1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using ;6using System.IO;7using System.Data;8using ponentModel;9using System.Windows.Forms;10using System.Text.RegularExpressions;11using System.Globalization;12using System.Collections;1314namespace ESIMRobot15 {16#region⽂件信息结构17public struct FileStruct18 {19public string Flags;20public string Owner;21public string Group;22public bool IsDirectory;23public DateTime CreateTime;24public string Name;25 }26public enum FileListStyle27 {28 UnixStyle,29 WindowsStyle,30 Unknown31 }32#endregion3334///<summary>35/// ftp⽂件上传、下载操作类36///</summary>37public class FTPHelper38 {39private string ftpServerURL;40private string ftpUser;41private string ftpPassWord;4243///<summary>44///45///</summary>46///<param name="ftpServerURL">ftp服务器路径</param>47///<param name="ftpUser">ftp⽤户名</param>48///<param name="ftpPassWord">ftp⽤户名</param>49public FTPHelper(string ftpServerURL, string ftpUser, string ftpPassWord)50 {51this.ftpServerURL = ftpServerURL;52this.ftpUser = ftpUser;53this.ftpPassWord = ftpPassWord;54 }55///<summary>56///通过⽤户名,密码连接到FTP服务器57///</summary>58///<param name="ftpUser">ftp⽤户名,匿名为“”</param>59///<param name="ftpPassWord">ftp登陆密码,匿名为“”</param>60public FTPHelper(string ftpUser, string ftpPassWord)61 {62this.ftpUser = ftpUser;63this.ftpPassWord = ftpPassWord;64 }6566///<summary>67///匿名访问68///</summary>69public FTPHelper(string ftpURL)70 {71this.ftpUser = "";72this.ftpPassWord = "";73 }747576//**************************************************** Start_1 *********************************************************//77///<summary>78///从FTP下载⽂件到本地服务器,⽀持断点下载79///</summary>80///<param name="ftpFilePath">ftp⽂件路径,如"ftp://localhost/test.txt"</param>81///<param name="saveFilePath">保存⽂件的路径,如C:\\test.txt</param>82public void BreakPointDownLoadFile(string ftpFilePath, string saveFilePath)83 {84 System.IO.FileStream fs = null;85 .FtpWebResponse ftpRes = null;86 System.IO.Stream resStrm = null;87try88 {89//下载⽂件的URI90 Uri uri = new Uri(ftpFilePath);91//设定下载⽂件的保存路径92string downFile = saveFilePath;9394//FtpWebRequest的作成95 .FtpWebRequest ftpReq = (.FtpWebRequest)96 .WebRequest.Create(uri);97//设定⽤户名和密码98 ftpReq.Credentials = new workCredential(ftpUser, ftpPassWord);99//MethodにWebRequestMethods.Ftp.DownloadFile("RETR")设定100 ftpReq.Method = .WebRequestMethods.Ftp.DownloadFile;101//要求终了后关闭连接102 ftpReq.KeepAlive = false;103//使⽤ASCII⽅式传送104 eBinary = false;105//设定PASSIVE⽅式⽆效106 ePassive = false;107108//判断是否继续下载109//继续写⼊下载⽂件的FileStream110if (System.IO.File.Exists(downFile))111 {112//继续下载113 ftpReq.ContentOffset = (new System.IO.FileInfo(downFile)).Length;114 fs = new System.IO.FileStream(115 downFile, System.IO.FileMode.Append, System.IO.FileAccess.Write);116 }117else118 {119//⼀般下载120 fs = new System.IO.FileStream(121 downFile, System.IO.FileMode.Create, System.IO.FileAccess.Write);122 }123124//取得FtpWebResponse125 ftpRes = (.FtpWebResponse)ftpReq.GetResponse();126//为了下载⽂件取得Stream127 resStrm = ftpRes.GetResponseStream();128//写⼊下载的数据129byte[] buffer = new byte[1024];130while (true)131 {132int readSize = resStrm.Read(buffer, 0, buffer.Length);133if (readSize == 0)134break;135 fs.Write(buffer, 0, readSize);136 }137 }138catch (Exception ex)139 {140throw new Exception("从ftp服务器下载⽂件出错,⽂件名:" + ftpFilePath + "异常信息:" + ex.ToString()); 141 }142finally143 {144 fs.Close();145 resStrm.Close();146 ftpRes.Close();147 }148 }149150151#region152//从FTP上下载整个⽂件夹,包括⽂件夹下的⽂件和⽂件夹函数列表153154///<summary>155///从ftp下载⽂件到本地服务器156///</summary>157///<param name="ftpFilePath">要下载的ftp⽂件路径,如ftp://192.168.1.104/capture-2.avi</param>158///<param name="saveFilePath">本地保存⽂件的路径,如(@"d:\capture-22.avi"</param>159public void DownLoadFile(string ftpFilePath, string saveFilePath)160 {161 Stream responseStream = null;162 FileStream fileStream = null;163 StreamReader reader = null;164try165 {166// string downloadUrl = "ftp://192.168.1.104/capture-2.avi";167 FtpWebRequest downloadRequest = (FtpWebRequest)WebRequest.Create(ftpFilePath);168 downloadRequest.Method = WebRequestMethods.Ftp.DownloadFile;169 downloadRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);170 FtpWebResponse downloadResponse = (FtpWebResponse)downloadRequest.GetResponse();171 responseStream = downloadResponse.GetResponseStream();172173 fileStream = File.Create(saveFilePath);174byte[] buffer = new byte[1024];175int bytesRead;176while (true)177 {178 bytesRead = responseStream.Read(buffer, 0, buffer.Length);179if (bytesRead == 0)180break;181 fileStream.Write(buffer, 0, bytesRead);182 }183 }184catch (Exception ex)185 {186throw new Exception("从ftp服务器下载⽂件出错,⽂件名:" + ftpFilePath + "异常信息:" + ex.ToString()); 187 }188finally189 {190if (reader != null)191 {192 reader.Close();193 }194if (responseStream != null)195 {196 responseStream.Close();197 }198if (fileStream != null)199 {200 fileStream.Close();201 }202 }203 }204205206///<summary>207///列出当前⽬录下的所有⽂件和⽬录208///</summary>209///<param name="ftpDirPath">FTP⽬录</param>210///<returns></returns>211public List<FileStruct> ListCurrentDirFilesAndChildDirs(string ftpDirPath)212 {213 WebResponse webresp = null;214 StreamReader ftpFileListReader = null;215 FtpWebRequest ftpRequest = null;216try217 {218 ftpRequest = (FtpWebRequest)WebRequest.Create(new Uri(ftpDirPath));219 ftpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;220 ftpRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);221 webresp = ftpRequest.GetResponse();222 ftpFileListReader = new StreamReader(webresp.GetResponseStream(),Encoding.GetEncoding("UTF-8")); 223 }224catch (Exception ex)225 {226throw new Exception("获取⽂件列表出错,错误信息如下:" + ex.ToString());227 }228string Datastring = ftpFileListReader.ReadToEnd();229return GetListX(Datastring);230231 }232233///<summary>234///列出当前⽬录下的所有⽂件235///</summary>236///<param name="ftpDirPath">FTP⽬录</param>237///<returns></returns>238public List<FileStruct> ListCurrentDirFiles(string ftpDirPath)239 {240 List<FileStruct> listAll = ListCurrentDirFilesAndChildDirs(ftpDirPath);241 List<FileStruct> listFile = new List<FileStruct>();242foreach (FileStruct file in listAll)243 {244if (!file.IsDirectory)245 {246 listFile.Add(file);247 }248 }249return listFile;250 }251252253///<summary>254///列出当前⽬录下的所有⼦⽬录255///</summary>256///<param name="ftpDirath">FRTP⽬录</param>257///<returns>⽬录列表</returns>258public List<FileStruct> ListCurrentDirChildDirs(string ftpDirath)259 {260 List<FileStruct> listAll = ListCurrentDirFilesAndChildDirs(ftpDirath);261 List<FileStruct> listDirectory = new List<FileStruct>();262foreach (FileStruct file in listAll)263 {264if (file.IsDirectory)265 {266 listDirectory.Add(file);267 }268 }269return listDirectory;270 }271272273///<summary>274///获得⽂件和⽬录列表(返回类型为: List<FileStruct> )275///</summary>276///<param name="datastring">FTP返回的列表字符信息</param>277private List<FileStruct> GetListX(string datastring)278 {279 List<FileStruct> myListArray = new List<FileStruct>();280string[] dataRecords = datastring.Split('\n');281 FileListStyle _directoryListStyle = GuessFileListStyle(dataRecords);282foreach (string s in dataRecords)283 {284if (_directoryListStyle != FileListStyle.Unknown && s != "")285 {286 FileStruct f = new FileStruct();287 = "..";288switch (_directoryListStyle)289 {290case FileListStyle.UnixStyle:291 f = ParseFileStructFromUnixStyleRecord(s);292break;293case FileListStyle.WindowsStyle:294 f = ParseFileStructFromWindowsStyleRecord(s);295break;296 }297if (!( == "." || == ".."))298 {299 myListArray.Add(f);300 }301 }302 }303return myListArray;304 }305///<summary>306///从Unix格式中返回⽂件信息307///</summary>308///<param name="Record">⽂件信息</param>309private FileStruct ParseFileStructFromUnixStyleRecord(string Record)310 {311 FileStruct f = new FileStruct();312string processstr = Record.Trim();313 f.Flags = processstr.Substring(0, 10);314 f.IsDirectory = (f.Flags[0] == 'd');315 processstr = (processstr.Substring(11)).Trim();316 cutSubstringFromStringWithTrim(ref processstr, '', 0); //跳过⼀部分317 f.Owner = cutSubstringFromStringWithTrim(ref processstr, '', 0);318 f.Group = cutSubstringFromStringWithTrim(ref processstr, '', 0);319 cutSubstringFromStringWithTrim(ref processstr, '', 0); //跳过⼀部分320string yearOrTime = processstr.Split(new char[] { '' }, StringSplitOptions.RemoveEmptyEntries)[2]; 321if (yearOrTime.IndexOf(":") >= 0) //time322 {323 processstr = processstr.Replace(yearOrTime, DateTime.Now.Year.ToString());324 }325 f.CreateTime = DateTime.Parse(cutSubstringFromStringWithTrim(ref processstr, '', 8));326 = processstr; //最后就是名称327return f;328 }329330///<summary>331///从Windows格式中返回⽂件信息332///</summary>333///<param name="Record">⽂件信息</param>334private FileStruct ParseFileStructFromWindowsStyleRecord(string Record)335 {336 FileStruct f = new FileStruct();337string processstr = Record.Trim();338string dateStr = processstr.Substring(0, 8);339 processstr = (processstr.Substring(8, processstr.Length - 8)).Trim();340string timeStr = processstr.Substring(0, 7);341 processstr = (processstr.Substring(7, processstr.Length - 7)).Trim();342 DateTimeFormatInfo myDTFI = new CultureInfo("en-US", false).DateTimeFormat;343 myDTFI.ShortTimePattern = "t";344 f.CreateTime = DateTime.Parse(dateStr + "" + timeStr, myDTFI);345if (processstr.Substring(0, 5) == "<DIR>")346 {347 f.IsDirectory = true;348 processstr = (processstr.Substring(5, processstr.Length - 5)).Trim();349 }350else351 {352string[] strs = processstr.Split(new char[] { '' }, 2);// StringSplitOptions.RemoveEmptyEntries); // true); 353 processstr = strs[1];354 f.IsDirectory = false;355 }356 = processstr;357return f;358 }359360361///<summary>362///按照⼀定的规则进⾏字符串截取363///</summary>364///<param name="s">截取的字符串</param>365///<param name="c">查找的字符</param>366///<param name="startIndex">查找的位置</param>367private string cutSubstringFromStringWithTrim(ref string s, char c, int startIndex)368 {369int pos1 = s.IndexOf(c, startIndex);370string retString = s.Substring(0, pos1);371 s = (s.Substring(pos1)).Trim();372return retString;373 }374375376///<summary>377///判断⽂件列表的⽅式Window⽅式还是Unix⽅式378///</summary>379///<param name="recordList">⽂件信息列表</param>380private FileListStyle GuessFileListStyle(string[] recordList)381 {382foreach (string s in recordList)383 {384if (s.Length > 10385 && Regex.IsMatch(s.Substring(0, 10), "(-|d)(-|r)(-|w)(-|x)(-|r)(-|w)(-|x)(-|r)(-|w)(-|x)"))386 {387return FileListStyle.UnixStyle;388 }389else if (s.Length > 8390 && Regex.IsMatch(s.Substring(0, 8), "[0-9][0-9]-[0-9][0-9]-[0-9][0-9]"))391 {392return FileListStyle.WindowsStyle;393 }394 }395return FileListStyle.Unknown;396 }397398399///<summary>400///从FTP下载整个⽂件夹401///</summary>402///<param name="ftpDirPath">FTP⽂件夹路径</param>403///<param name="saveDirPath">保存的本地⽂件夹路径</param>404///调⽤实例: DownFtpDir("FTP://192.168.1.113/WangJin", @"C:\QMDownload\SoftMgr");405///当调⽤的时候先判断saveDirPath的⼦⽬录中是否有WangJin⽬录,有则执⾏,没有创建后执⾏406///最终⽂件保存在@"C:\QMDownload\SoftMgr\WangJin"下407public bool DownFtpDir(string ftpDirPath, string saveDirPath)408 {409bool success = true;410try411 {412 List<FileStruct> files = ListCurrentDirFilesAndChildDirs(ftpDirPath);413if (!Directory.Exists(saveDirPath))414 {415 Directory.CreateDirectory(saveDirPath);416 }417foreach (FileStruct f in files)418 {419if (f.IsDirectory) //⽂件夹,递归查询421 DownFtpDir(ftpDirPath + "/" + , saveDirPath + "\\" + );422 }423else//⽂件,直接下载424 {425 DownLoadFile(ftpDirPath + "/" + , saveDirPath + "\\" + );426 }427 }428 }429catch (Exception e)430 {431 MessageBox.Show(e.Message);432 success = false;433 }434return success;435 }436#endregion437438439440///<summary>441///列出当前⽬录下的所有⼦⽬录和⽂件到TreeView控件中442///</summary>443///<param name="ftpDirPath"> FTP服务器⽬录</param>444///<param name="treeview">显⽰到TreeView控件中</param>445///<param name="treenode">TreeView控件的⼦节点</param>446public void ListCurrentDirFilesAndDirToTreeView(string ftpDirPath, TreeView treeview, TreeNode treenode) 447 {448if (ftpDirPath == "")449 {450 ftpDirPath = ftpServerURL;451 }452if (treeview != null)453 {454 treeview.Nodes.Clear();455 treenode = treeview.Nodes.Add(ftpDirPath);456 }457 List<FileStruct> files = ListCurrentDirFilesAndChildDirs(ftpDirPath);458foreach (FileStruct f in files)459 {460if (f.IsDirectory) //如果为⽬录(⽂件夹),递归调⽤461 {462 TreeNode td = treenode.Nodes.Add();463 ListCurrentDirFilesAndDirToTreeView(ftpDirPath + "/" + , null, td);464 }465else//如果为⽂件,直接加⼊到节点中466 {467 treenode.Nodes.Add();468 }469 }470 }471//************************************* End_1 ****************************//472473474475476//************************************ Start_2 ***************************//477///<summary>478///检测⽂件或⽂件⽬录是否存在479///</summary>480///<param name="ftpDirPath">ftp服务器中的⽬录路径</param>481///<param name="ftpDirORFileName">待检测的⽂件或⽂件名</param>482///<returns></returns>483///操作实例: ftpclient.fileOrDirCheckExist("FTP://192.168.1.113/Record/", "")484/// ftpclient.fileOrDirCheckExist("FTP://192.168.1.113/RecordFile/", "333.txt")485public bool fileOrDirCheckExist(string ftpDirPath, string ftpDirORFileName)486 {487bool success = true;488 FtpWebRequest ftpWebRequest = null;489 WebResponse webResponse = null;490 StreamReader reader = null;491try492 {493string url = ftpDirPath + ftpDirORFileName;494 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));495 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);496 ftpWebRequest.Method = WebRequestMethods.Ftp.ListDirectory;497 ftpWebRequest.KeepAlive = false;498 webResponse = ftpWebRequest.GetResponse();499 reader = new StreamReader(webResponse.GetResponseStream());500string line = reader.ReadLine();501while (line != null)502 {503if (line == ftpDirORFileName)504 {505break;507 line = reader.ReadLine();508 }509 }510catch (Exception)511 {512 success = false;513 }514finally515 {516if (reader != null)517 {518 reader.Close();519 }520if (webResponse != null)521 {522 webResponse.Close();523 }524 }525return success;526 }527528529///<summary>530///获得⽂件和⽬录列表(返回类型为:FileStruct)531///</summary>532///<param name="datastring">FTP返回的列表字符信息</param>533public FileStruct GetList(string datastring)534 {535 FileStruct f = new FileStruct();536string[] dataRecords = datastring.Split('\n');537 FileListStyle _directoryListStyle = GuessFileListStyle(dataRecords);538if (_directoryListStyle != FileListStyle.Unknown && datastring != "")539 {540541switch (_directoryListStyle)542 {543case FileListStyle.UnixStyle:544 f = ParseFileStructFromUnixStyleRecord(datastring);545break;546case FileListStyle.WindowsStyle:547 f = ParseFileStructFromWindowsStyleRecord(datastring);548break;549 }550 }551return f;552 }553554555///<summary>556///上传557///</summary>558///<param name="localFilePath">本地⽂件名路径</param>559///<param name="ftpDirPath">上传到ftp中⽬录的路径</param>560///<param name="ftpFileName">上传到ftp中⽬录的⽂件名</param>561///<param name="fileLength">限制上传⽂件的⼤⼩(Bytes为单位)</param>562///操作实例: ftpclient.fileUpload(@"E:\bin\Debug\Web\RecordFile\wangjin\wangjin.txt", "FTP://192.168.1.113/Record/","123.txt",0 );563public bool UploadFile(FileInfo localFilePath, string ftpDirPath, string ftpFileName, long fileLength)564 {565bool success = true;566long filesize = 0;567 FtpWebRequest ftpWebRequest = null;568 FileStream localFileStream = null;569 Stream requestStream = null;570if (fileLength > 0)571 {572 filesize = fileLength * 1024 * 1024;573 }574if (localFilePath.Length <= filesize || filesize == 0)575 {576if (fileOrDirCheckExist(ftpDirPath.Substring(0, stIndexOf(@"/") + 1), ftpDirPath.Substring(stIndexOf(@"/") + 1))) 577 {578try579 {580string uri = ftpDirPath + ftpFileName;581 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));582 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);583 eBinary = true;584 ftpWebRequest.KeepAlive = false;585 ftpWebRequest.Method = WebRequestMethods.Ftp.UploadFile;586 ftpWebRequest.ContentLength = localFilePath.Length;587int buffLength = 2048; //定义缓存⼤⼩2KB588byte[] buff = new byte[buffLength];589int contentLen;590 localFileStream = localFilePath.OpenRead();591 requestStream = ftpWebRequest.GetRequestStream();592 contentLen = localFileStream.Read(buff, 0, buffLength);593while (contentLen != 0)594 {595 requestStream.Write(buff, 0, contentLen);596 contentLen = localFileStream.Read(buff, 0, buffLength);597 }598 }599catch (Exception)600 {601 success = false;602 }603finally604 {605if (requestStream != null)606 {607 requestStream.Close();608 }609if (localFileStream != null)610 {611 localFileStream.Close();612 }613 }614 }615else616 {617 success = false;618 MessageBox.Show("FTP⽂件路径不存在!");619 }620 }621else622 {623 success = false;624 MessageBox.Show("⽂件⼤⼩超过设置范围!" + "\n" + "⽂件实际⼤⼩为:" + localFilePath.Length + "\n" + "允许上传阈值为:" + (5 * 1024 * 1024).ToString()); 625 }626return success;627 }628629///<summary>630///下载⽂件631///</summary>632///<param name="ftpFilePath">需要下载的⽂件名路径</param>633///<param name="localFilePath">本地保存的⽂件名路径)</param>634///操作实例: ftpclient.fileDownload(@"E:\bin\Debug\Web\RecordFile\wangjin\459.txt", "FTP://192.168.1.113/Record/123.txt");635public bool DownloadFile( string localFilePath, string ftpFilePath)636 {637bool success = true;638 FtpWebRequest ftpWebRequest = null;639 FtpWebResponse ftpWebResponse = null;640 Stream ftpResponseStream = null;641 FileStream outputStream = null;642try643 {644 outputStream = new FileStream(localFilePath, FileMode.Create);645string uri = ftpFilePath;646 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));647 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);648 eBinary = true;649 ftpWebRequest.Method = WebRequestMethods.Ftp.DownloadFile;650 ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();651 ftpResponseStream = ftpWebResponse.GetResponseStream();652long contentLength = ftpWebResponse.ContentLength;653int bufferSize = 2048;654byte[] buffer = new byte[bufferSize];655int readCount;656 readCount = ftpResponseStream.Read(buffer, 0, bufferSize);657while (readCount > 0)658 {659 outputStream.Write(buffer, 0, readCount);660 readCount = ftpResponseStream.Read(buffer, 0, bufferSize);661 }662 }663catch (Exception)664 {665 success = false;666 }667finally668 {669if (outputStream != null)670 {671 outputStream.Close();672 }673if (ftpResponseStream != null)674 {675 ftpResponseStream.Close();676 }677if (ftpWebResponse != null)679 ftpWebResponse.Close();680 }681 }682return success;683 }684685686///<summary>687///重命名688///</summary>689///<param name="ftpDirPath">ftp服务器中的⽬录</param>690///<param name="currentFilename">当前要修改的⽂件名</param>691///<param name="newFilename">修改后的新⽂件名</param>692///操作实例: ftpclientxy.fileRename("FTP://192.168.1.113/RecordFile/", "123.txt", "333.txt");693public bool RenameFile(string ftpDirPath, string currentFileName, string newFileName)694 {695bool success = true;696 FtpWebRequest ftpWebRequest = null;697 FtpWebResponse ftpWebResponse = null;698 Stream ftpResponseStream = null;699if (fileOrDirCheckExist(ftpDirPath.Substring(0, stIndexOf(@"/") + 1), ftpDirPath.Substring(stIndexOf(@"/") + 1))) 700 {701try702 {703string uri = ftpDirPath + currentFileName;704 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));705 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);706 eBinary = true;707 ftpWebRequest.Method = WebRequestMethods.Ftp.Rename;708 ftpWebRequest.RenameTo = newFileName;709 ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();710 ftpResponseStream = ftpWebResponse.GetResponseStream();711 }712catch (Exception)713 {714 success = false;715 }716finally717 {718if (ftpResponseStream != null)719 {720 ftpResponseStream.Close();721 }722if (ftpWebResponse != null)723 {724 ftpWebResponse.Close();725 }726 }727 }728else729 {730 success = false;731 MessageBox.Show("FTP⽂件路径不存在!");732 }733return success;734 }735736///<summary>737///在⽬录下创建⼦⽬录738///</summary>739///<param name="ftpDirPath">ftp服务器中的⽬录</param>740///<param name="ftpFileDir">待创建的⼦⽬录</param>741///<returns></returns>742///操作实例: ftpclient.fileDirMake("FTP://192.168.1.113/RecordFile/", "WangJinFile")743public bool MakeDir(string ftpDirPath, string ftpFileDir)744 {745bool success = true;746 FtpWebRequest ftpWebRequest = null;747 WebResponse webResponse = null;748 StreamReader reader = null;749try750 {751string url = ftpDirPath + ftpFileDir;752 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));753// 指定数据传输类型754 eBinary = true;755 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);756 ftpWebRequest.Method = WebRequestMethods.Ftp.MakeDirectory;757 webResponse = ftpWebRequest.GetResponse();758 }759catch (Exception)760 {761 success = false;762 }763finally765if (reader != null)766 {767 reader.Close();768 }769if (webResponse != null)770 {771 webResponse.Close();772 }773 }774return success;775 }776777778///<summary>779///删除⽬录中的⽂件780///</summary>781///<param name="ftpDirPath"></param>782///<param name="ftpFileName"></param>783///<returns></returns>784///操作实例: ftpclient.fileDelete("FTP://192.168.1.113/RecordFile/WangJinFile/", "333.txt")785public bool DeleteFile(string ftpDirPath, string ftpFileName)786 {787bool success = true;788 FtpWebRequest ftpWebRequest = null;789 FtpWebResponse ftpWebResponse = null;790 Stream ftpResponseStream = null;791 StreamReader streamReader = null;792try793 {794string uri = ftpDirPath + ftpFileName;795 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));796 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);797 ftpWebRequest.KeepAlive = false;798 ftpWebRequest.Method = WebRequestMethods.Ftp.DeleteFile;799 ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();800long size = ftpWebResponse.ContentLength;801 ftpResponseStream = ftpWebResponse.GetResponseStream();802 streamReader = new StreamReader(ftpResponseStream);803string result = String.Empty;804 result = streamReader.ReadToEnd();805 }806catch (Exception)807 {808 success = false;809 }810finally811 {812if (streamReader != null)813 {814 streamReader.Close();815 }816if (ftpResponseStream != null)817 {818 ftpResponseStream.Close();819 }820if (ftpWebResponse != null)821 {822 ftpWebResponse.Close();823 }824 }825return success;826 }827828///<summary>829///获取⽬录的⼦⽬录数组830///</summary>831///<param name="ftpDirPath"></param>832///<returns></returns>833///操作实例: string []filedir = ftpclient.GetDeleteFolderArray("FTP://192.168.1.113/WangJinFile/"); 834public string[] GetDirArray(string ftpDirPath)835 {836string[] deleteFolders;837 FtpWebRequest ftpWebRequest = null;838 FtpWebResponse ftpWebResponse = null;839 Stream ftpResponseStream = null;840 StreamReader streamReader = null;841 StringBuilder result = new StringBuilder();842try843 {844 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpDirPath));845 eBinary = true;846 ePassive = false;847 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);848 ftpWebRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;849 ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();。
(总结完整版) Ant 从SVNCVS下载 编译打包部署到本地远程服务器 (FTP上传)
通过一番琢磨,参考网上些许资料以及Ant文档,将Ant在J2EE构建中常用的脚本整合了起来,实现了Ant从版本控制器(SVN/CVS /VSS)checkout项目源码,编译编译打包,部署软件包到远程/本地服务器的整合,从此任何复杂的J2EE构建变得方便优雅...现记录大致笔记如下:分为两部分:1.我的环境2.文字大致叙述整合流程以及注意事项3.贴脚本实例一. 我的环境JDK1.7/TOMCAT6.0/ANT1.8.2/SVN/CVS/SERVER-U二:整合流程1.下载并安装Ant,配置ANT_HOME,PATH;在命令行执行ANT -VERSION,查看版本号检查是否安装配置成功2. 将ant从SVN checkout,上传FTP,启动Tomcat的依赖Jar分别加入进ant目录下地lib目录,具体为A.SVN依赖jar: svnant.jar/svnClientAdapter.jar/svnjavahl.jar;可从这里下载(/source/3544090)B.FTP依赖Jar: commons-net-1.4.1.jar;可从这里下载()C.Tomcat 依赖Jar:将Tomcat目录中lib目录下地catalina-ant.jar 拷贝之ant目录下地lib目录3.编写脚本(分段编写,并一一测试)A.从SVN/CVS checkout项目B.打包编译C.部署软件包到远程服务器(1)通过FTP上传到远程服务器webapps目录:注意事项:本人在远程服务器架设的ftp服务器是Server-U,设置Server-U账户权限时注意赋予账户写文件的权限以及访问需要的路径(可以为任意路径)(2) FTP上传完毕后,启动Web application:注意设置添加账户 <user username="admin"password="admin" roles="admin,manager"/>三:脚本实例<!-- svn下载,编译,打包,上传到ftp服务器,启动Web程序-->1.Tomcat/svn/ftp等配置属性文件 ant.properties=antDemocatalina.home=D:\Tomcat6.1catalina.apps=D:\Tomcat6.1\webapps#svn properties#svn.url=svn://192.168.1.202/antDemoername=*****svn.password=*****#cvs properties##cvs.root=:pserver:***@192.168.8.27:2401/home/Functions#cvs.password=*****#cvs.checkout.dir=.#tomcat properties#tomcat.manager.url=http://localhost:9080/managerername=*****tomcat.manager.password=*****#ftp properties#ftp.server=192.168.1.202ftp.password=*****erid=*****2.build.xml<?xml version="1.0" encoding="UTF-8"?><project name="${}" default="start" basedir="."><!-- svn下载,编译,打包,上传到ftp服务器,启动Web程序--><property file="ant.properties" /> <!-- 引入Tomcat/svn/ftp等配置属性文件--><property name="complile.dir" location="${basedir}/bin/classes"/> <property name="src.dir" value="${basedir}/src"/><property name="lib.dir" value="${basedir}/WebRoot/WEB-INF/lib"/><!-- =================================clean files================================= --><target name="cleanAll"><delete dir="${basedir}" /></target><!-- Ant svn Task Definition --><taskdef name="svn"classname="org.tigris.subversion.svnant.SvnTask" /><!-- =================================SVN Checkout================================= --><target name="svn.checkout" depends="cleanAll"><mkdir dir="${basedir}/SVN"/><svn javahl="true" username="${ername}"password="${svn.password}"><checkout url="${svn.url}"destPath="${basedir}/SVN"></checkout></svn></target><!-- =================================CVS Checkout================================= --><!--<target name="initpass" depends="cleanAll"><cvspass cvsroot="${cvs.root}" password="${cvs.password}" /> </target><target name="checkout" depends="initpass"><cvs cvsroot="${cvs.root}" command="checkout" quiet="true" cvsrsh="ssh" package="${}" dest="${cvs.checkout.dir}" /> <cvs cvsroot="${cvs.root}" command="checkout" quiet="true" cvsrsh="ssh" package="${}" dest="${cvs.checkout.dir}" /> </target>--><!-- =================================target: compile the src================================= --><target name="init"><delete dir="${complile.dir}"/><mkdir dir="${complile.dir}"/></target><path id="complile.classpath"><fileset dir="${catalina.home}/lib"><include name="catalina*.jar"/></fileset><fileset dir="${lib.dir}"><include name="**/*.jar"/></fileset></path><target name="complile" depends="init"><javac srcdir="${src.dir}" destdir="${complile.dir}"> <classpath path="${complile.dir}" /><classpath refid="complile.classpath"/></javac></target><!-- =================================target: deploy war================================= --><target name="war" depends="complile"><delete><fileset dir="." includes="**/*.war" /></delete><war destfile="${}.war"webxml="WebRoot/WEB-INF/web.xml"><classes dir="${complile.dir}"/><fileset dir="WebRoot" id="dir"><include name="**/*.*"/><exclude name="WEB-INF"/></fileset></war></target><!-- =================================target: upload with ftp================================= --><target name="upload" depends="war"><ftp password="${ftp.password}"server="${ftp.server}"userid="${erid}"remotedir="${catalina.apps}"binary="true"><fileset file="${basedir}/${}.war"/></ftp></target><!-- Ant Tomcat Task Definition --><taskdef name="deploy"classname="org.apache.catalina.ant.DeployTask" /><taskdef name="undeploy"classname="org.apache.catalina.ant.UndeployTask" /><taskdef name="remove"classname="org.apache.catalina.ant.RemoveTask" /><taskdef name="reload"classname="org.apache.catalina.ant.ReloadTask" /><taskdef name="start"classname="org.apache.catalina.ant.StartTask" /><taskdef name="stop" classname="org.apache.catalina.ant.StopTask" /><taskdef name="list" classname="org.apache.catalina.ant.ListTask" /><!-- =================================target: deploy_to_tomcat================================= --><target name="deploy" depends="war"><deploy url="${tomcat.manager.url}"password="${tomcat.manager.password}"path="/${}"war="file:${basedir}/${}.war" /> </target><target name="undeploy"><undeploy url="${tomcat.manager.url}"username="${ername}"password="${tomcat.manager.password}"path="/${}"/></target><target name="remove"><remove url="${tomcat.manager.url}"username="${ername}"password="${tomcat.manager.password}"path="/${}"/></target><target name="reload"><reload url="${tomcat.manager.url}"username="${ername}"password="${tomcat.manager.password}"path="/${}"/></target><target name="start" depends="upload"><start url="${tomcat.manager.url}"username="${ername}"password="${tomcat.manager.password}"path="/${}"/></target><target name="stop"><stop url="${tomcat.manager.url}"username="${ername}"password="${tomcat.manager.password}"path="/${}"/></target><target name="list"><list url="${tomcat.manager.url}"password="${tomcat.manager.password}"/></target><!-- =================================target: tomcat shell================================= --><target name="tomcat.start"><java jar="${catalina.home}/bin/bootstrap.jar" fork="true"> <jvmarg value="-Dcatalina.home=${catalina.home}"/></java></target><target name="tomcat.stop"><java jar="${catalina.home}/bin/bootstrap.jar"fork="true"><jvmarg value="-Dcatalina.home=${catalina.home}"/> <arg line="stop"/></java></target><target name="tomcat.debug"><java jar="${catalina.home}/bin/bootstrap.jar"fork="true"><jvmarg value="-Dcatalina.home=${catalina.home}"/> <jvmarg value="-Xdebug"/><jvmargvalue="-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n" /></java></target></project>。
JAVA中的FtpClient与FTPClient,并实现jsp页面下载ftp服务器上的文件
JAVA中的FtpClient与FTPClient,并实现jsp页面下载ftp服务器上的文件这段时间一直在研究Java如何访问Ftp,搞了一段时间了,也有一定的了解。
故此记录一下。
ftp和FTP我个人觉得FTP更符合我们程序员的口味,不管是方法命名还是API的详细与否,或者是开发平台的问题,FTP毕竟是Apache的东西,做的就是不错。
其实web开发中一般都会涉及到编码问题,所以web上传下载一定会有中文乱码的问题存在,而FTP对中文的支持比ftp要好多了。
使用ftpClient不需要导入其它jar包,只要你使用java语言开发就行了,而使用FTPClient 需要使用commons-net-1.4.1.jar和jakarta-oro-2.0.8.jar,当然jar版本随便你自己。
话不多说,上代码!FTP服务器的文件目录结构图:一、FtpClientFtpClient是属于JDK的包下面的类,但是jdkapi并没有对此作介绍,在中文支持上面也有一定的限制。
本段代码中的Ftp服务器的IP地址,用户名和密码均通过SystemConfig.properties文档获取Ftp_client.java[java]view plain copy1.package com.iodn.util;2.3.import java.io.ByteArrayOutputStream;4.import java.io.File;5.import java.io.FileInputStream;6.import java.io.FileOutputStream;7.import java.io.IOException;8.import java.util.ResourceBundle;9.import .TelnetInputStream;10.import .TelnetOutputStream;11.import .ftp.FtpClient;12.13.public class Ftp_client {14.15.//FTP客户端16.private FtpClient ftpClient;17.private ResourceBundle res=null;18./**19. * 连接FTP服务器20. * @param path 指定远程服务器上的路径21. */22.public Ftp_client(String path){23.24. res = ResourceBundle.getBundle("com.iodn.util.SystemConfig");//获取配置文件propeties文档中的数据25.try{26. ftpClient=new FtpClient(res.getString("Properties.ftpHostIp"));//如果不想使用配置文件即可将数据写死(如:192.168.1.10)27. ftpClient.login(res.getString("Properties.ftpUser"), res.getString("Properties.ftpPassword"));//Ftp服务器用户名和密码28. ftpClient.binary();29. System.out.println("Login Success!");30.if(path.length()!=0){31.//把远程系统上的目录切换到参数path所指定的目录(可不用设置,上传下载删除时加Ftp中的全路径即可)32. ftpClient.cd(path);33. }34. }catch(Exception e){35. e.printStackTrace();36. }37. }38.39./**40. * 上传文件41. * @param remoteFile42. * @param localFile43. */44.public boolean upload(String remoteFile, String localFile){45.boolean bool=false;46. TelnetOutputStream os=null;47. FileInputStream is=null;48.try{49. os=ftpClient.put(remoteFile);50. is=new FileInputStream(new File(localFile));51.byte[] b=new byte[1024];52.int c;53.while((c=is.read(b))!=-1){54. os.write(b, 0, c);55. }56. bool=true;57. }catch(Exception e){58. e.printStackTrace();59. System.out.println("上传文件失败!请检查系统FTP设置,并确认FTP服务启动");60. }finally{61.if(is!=null){62.try {63. is.close();64. } catch (IOException e) {65. e.printStackTrace();66. }67. }68.if(os!=null){69.try {70. os.close();71. } catch (IOException e) {72. e.printStackTrace();74. }75. closeConnect();76. }77.return bool;78. }79./**80. * 下载文件81. * @param remoteFile 远程文件路径(服务器端)82. * @param localFile 本地文件路径(客户端)83. */84.85.public void download(String remoteFile, String localFile) {86. TelnetInputStream is=null;87. FileOutputStream os=null;88.try{89.//获取远程机器上的文件filename,借助TelnetInputStream把该文件传送到本地。
使用递归方法实现,向FTP服务器上传整个目录结构、从FTP服务器下载整个目录到本地的功能
使用递归方法实现,向FTP服务器上传整个目录结构、从FTP 服务器下载整个目录到本地的功能我最近由于在做一个关于FTP文件上传和下载的功能时候,发现Apache FTP jar包没有提供对整个目录结构的上传和下载功能,只能非目录类型的文件进行上传和下载操作,后来我查阅很多网上的实现方法,再结合自己的理解、以及符合自己的需求,完成了我自己的apache FTP jar包补充类。
上面是背景,基本叙述完毕,下面开始介绍实现方法和代码。
一。
环境搭建:1.使用的FileZilla Server开源免费软件,安装过后建立的本地FTP服务器。
2.使用的apache上下载FTP工具包,引用到工程目录中。
3.IDE,Eclipse,JDK6二。
介绍代码。
上传和下载目录的实现原理:对每一个层级的目录进行判断,是为目录类型、还是文件类型。
如果为目录类型,采用递归调用方法,检查到最底层的目录为止结束。
如果为文件类型,则调用上传或者下载方法对文件进行上传或者下载操作。
贴出代码:(其中有些没有代码,可以看看,还是很有用处的)[java]view plaincopyprint?1.package com.ftp;2.3.import java.io.File;4.import java.io.FileInputStream;5.import java.io.FileOutputStream;6.import java.io.IOException;7.import java.io.InputStream;8.import java.io.OutputStream;9.import .SocketException;10.11.import .ftp.FTP;12.import .ftp.FTPClient;13.import .ftp.FTPClientConfig;14.import .ftp.FTPFile;15.import .ftp.FTPReply;16.17.public class RemoteFtpProcess extends FTPClient {18.private static FTPClient ftpClient = new FTPClient();19.20./**21.* 本方法用户登录远程的FTP服务器22.*23.* @param url :表示FTP的IP地址24.* @param port :FTP服务器端口,默认端口为2125.* @param userName :登录FTP的用户名26.* @param password :登录FTP的密码27.*28.* @return FTPClient:返回为FTPClient对象29.*/30.public FTPClient loginFtp(String url, int port, String us erName,31.String password) {32.try {33.ftpClient.connect(url, port);34.ftpClient.setControlEncoding("UTF-8");35.FTPClientConfig ftpConfig = new FTPClientConfig(FTP ClientConfig.SYST_NT);36.ftpConfig.setServerLanguageCode("zh");37.ftpClient.login(userName, password);38.int reply = 0;39.reply = ftpClient.getReplyCode();40.System.out.println(reply);41.if (FTPReply.isPositiveCompletion(reply)) {42.System.out.println("登录成功!");43.} else {44.System.out.println("登录失败!");45.}46.} catch (SocketException e) {47. e.printStackTrace();48.} catch (IOException e) {49. e.printStackTrace();50.}51.return ftpClient;52.}53.54./**55.* @param ftpc :退出FTP登录56.* @return boolean :是否已经关闭连接57.*58.* @throws IOException59.*/60.public static boolean closeConnections(FTPClient ftpc)throws IOException {61.boolean bool = false;62.ftpc.logout();63.return bool;64.}65.66./**67.* 方法用于上传文件到FTP服务器的指定文件夹中68.*69.* @param fileName :上传文件的名称70.* @param input :上传文件的输入流对象71.* @param toFtpPath :上传到FTP的目的路径72.*73.* @return boolean:表示上传是否成功74.*75.*/76.public boolean uploadFileToFtp(String fileName, Input Stream input,77.String toFtpPath) {78.boolean bool = false;79.try {80.// 使得能够处理中文编码81.fileName = new String(fileName.getBytes("GBK"), "ISO -8859-1");82.toFtpPath = new String(toFtpPath.getBytes("GBK"), "IS O-8859-1");83.// 转到上传文件的FTP目录中84.ftpClient.changeWorkingDirectory(toFtpPath);85.// 设置处理文件的类型为字节流的形式86.ftpClient.setFileType(FTP.BINARY_FILE_TYPE);87.// 如果缺省该句传输txt正常但图片和其他格式的文件传输出现乱码88.ftpClient.storeFile(fileName, input);89.input.close();90.bool = true;91.} catch (IOException e) {92.bool = false;93. e.printStackTrace();94.}95.return bool;96.}97.98./**99.* 方法用于从FTP服务器中下载文件100.*101.* @param ftpUrl :下载文件所处FTP中路径102.* @param fileName :下载的文件名称103.* @param outputSream :下载文件的输出流对象104.*105.* @return boolean :表示是否上传成功106.*107.*/108.public boolean downloadFileFromFtp(String ftpUrl, Str ing fileName,109.OutputStream outputStream) {110.boolean bool = false;111.try {112.ftpClient.changeWorkingDirectory(ftpUrl);113.FTPFile[] ftpFile = ftpClient.listFiles();114.for (int i = 0; i < ftpFile.length; i++) {115.if (fileName.equals(ftpFile[i].getName())) {116.ftpClient.retrieveFile(new String(ftpFile[i].getName() 117..getBytes("GBK"), "ISO-8859-1"), outputStream);118.outputStream.flush();119.outputStream.close();120.}121.}122.bool = true;123.} catch (IOException e) {124. e.printStackTrace();125.bool = false;126.}127.return bool;128.}129.130./**131.* 方法用户删除FTP上的指定的文件132.*133.* @param fileUrl :文件在FTP中的路径134.* @param fileName :文件的名称135.*136.* @return boolean:删除是否成功137.*/138.public boolean deleteFileOnFtp(String fileUrl, String fil eName) {139.boolean bool = false;140.try {141.ftpClient.changeWorkingDirectory(fileUrl);142.FTPFile[] ftpFiles = ftpClient.listFiles();143.System.out.println(ftpFiles.length);144.for (int i = 0; i < ftpFiles.length; i++) {145.if (fileName.equals(ftpFiles[i].getName())) {146.ftpClient.deleteFile(fileName);147.}148.}149.} catch (IOException e) {150. e.printStackTrace();151.}152.return bool;153.}154.155./**156.* 判断指定文件中是否存在相同名称的文件157.*158.* @param remotePath :FTP上的远程目录159.* @param fileName:文件名称160.* @return boolean :判断是否存在相同名称161.*162.*/163.public boolean isSameName(String remotePath, String fileName) {164.boolean bool = false;165.try {166.FTPFile[] ftpFiles = ftpClient.listFiles();167.System.out.println(ftpFiles.length);168.ftpClient.changeWorkingDirectory(remotePath);169.for (int i = 0; i < ftpFiles.length; i++) {170.if (fileName.equals(ftpFiles[i].getName())) {171.System.out.println("存在和指定文件相同名称的文件");172.bool = true;173.} else {174.bool = false;175.}176.}177.} catch (Exception e) {178.bool = false;179.}180.return bool;181.}182.183./**184.* 更改文件名称185.*186.*/187.public String changeName(String remotePath, String fi leName, String newName) {188.if (isSameName(remotePath, fileName)) {189.fileName = fileName + "." + newName;190.}191.return fileName;192.}193.194.195.public static void newFileOnFTP(String pathName){ 196.try {197.ftpClient.mkd(pathName);198.} catch (IOException e) {199. e.printStackTrace();200.}201.}202.203.//上传整个目录到FTP的指定目录中204.public void uploadDirFiles(String dirPath,String toRem otePath) throws IOException{205.if (dirPath!=null && !dirPath.equals("")) {206.//建立上传目录的File对象207.File dirFile = new File(dirPath);208.//判断File对象是否为目录类型209.if (dirFile.isDirectory()) {210.//如果是目录类型。
分析使用FTP下载文件的流程
分析使用FTP下载文件的流程1. 什么是FTP?FTP(File Transfer Protocol,文件传输协议)是一种网络协议,用于在计算机之间传输文件。
FTP可以在本地计算机和远程计算机之间建立连接,并通过下载和上传文件来进行数据传输。
2. FTP下载文件的流程以下是使用FTP下载文件的一般流程:步骤1:准备FTP客户端首先,您需要在本地计算机上安装一个FTP客户端软件,用于与远程服务器进行连接和文件传输。
常见的FTP客户端软件包括FileZilla、CuteFTP和FlashFXP 等。
您可以根据自己的需求选择一个合适的FTP客户端。
步骤2:确定远程服务器地址和登录凭据在通过FTP下载文件之前,您需要知道远程服务器的地址、用户名和密码。
这些信息通常由服务器管理员提供。
确保您准确地了解这些信息,并将其输入到FTP 客户端中。
步骤3:建立FTP连接使用您的FTP客户端,通过输入远程服务器地址、用户名和密码,建立与服务器的FTP连接。
一旦连接成功,您将能够在您的本地计算机和远程服务器之间传输文件。
步骤4:导航到目标文件在FTP连接建立后,您将能够导航到远程服务器上的文件目录。
这与在本地计算机上导航到文件夹类似。
使用FTP客户端提供的导航功能,浏览和选择您要下载的文件所在的目录。
步骤5:选择文件并下载一旦您在远程服务器上导航到目标文件所在的目录,使用FTP客户端选择要下载的文件。
通常,您可以通过右键点击文件并选择“下载”选项来完成文件下载。
在文件下载过程中,您可以选择指定本地计算机上的下载路径。
步骤6:等待文件下载完成一旦您选择了文件并指定了下载路径,FTP客户端将开始下载文件。
您需要耐心等待下载过程完成。
下载过程的时间取决于文件的大小和网络速度。
步骤7:确认文件下载成功下载完成后,您可以检查文件是否成功下载到本地计算机上的指定路径。
确保文件的完整性和正确性,以确保下载成功。
3. 使用FTP下载文件的注意事项在使用FTP下载文件时,还需要注意以下事项:•确保您具有合法的访问权限:获得远程服务器的地址、用户名和密码之前,确保您具有合法的访问权限。
java实现连接ftp服务器并下载文件到本地
java实现连接ftp服务器并下载⽂件到本地1.pom.xml引⼊jar包<!--ftp--><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.6</version></dependency>2.连接ftp服务器⽅法/*** 连接ftp服务器* @param ip ftp地址* @param port 端⼝* @param username 账号* @param password 密码* @return* @throws IOException*/public static FTPClient ftpConnection(String ip,String port, String username, String password) throws IOException {FTPClient ftpClient = new FTPClient();try {ftpClient.connect(ip, Integer.parseInt(port));ftpClient.login(username, password);int replyCode = ftpClient.getReplyCode(); //是否成功登录服务器if(!FTPReply.isPositiveCompletion(replyCode)) {ftpClient.disconnect();logger.error("--ftp连接失败--");System.exit(1);}ftpClient.enterLocalPassiveMode();//这句最好加告诉对⾯服务器开⼀个端⼝ftpClient.setFileType(FTP.BINARY_FILE_TYPE);ftpClient.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);} catch (SocketException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return ftpClient;}3.断开ftp服务⽅法/*** 断开FTP服务器连接* @param ftpClient 初始化的对象* @throws IOException*/public static void close(FTPClient ftpClient) throws IOException{if(ftpClient!=null && ftpClient.isConnected()){ftpClient.logout();ftpClient.disconnect();}}4.下载ftp服务器知道路径的⽂件到本地⽅法/*** 下载ftp服务器⽂件⽅法* @param ftpClient FTPClient对象* @param newFileName 新⽂件名* @param fileName 原⽂件(路径+⽂件名)* @param downUrl 下载路径* @return* @throws IOException*/public static boolean downFile(FTPClient ftpClient, String newFileName, String fileName, String downUrl) throws IOException {boolean isTrue = false;OutputStream os=null;File localFile = new File(downUrl + "/" + newFileName);if (!localFile.getParentFile().exists()){//⽂件夹⽬录不存在创建⽬录localFile.getParentFile().mkdirs();localFile.createNewFile();}os = new FileOutputStream(localFile);isTrue = ftpClient.retrieveFile(new String(fileName.getBytes(),"ISO-8859-1"), os);os.close();return isTrue;}5.调⽤测试mainpublic static void main(String[] args) throws IOException{FTPClient ftpClient = this.ftpConnection("172.*.*.*","*","username","password");boolean flag = downFile(ftpClient,"⽂件名","/路径/+⽂件名","本地路径"); close(ftpClients);System.out.println(flag );//flag=true说明下载成功}。
delphi idftp用法
delphi idftp用法Delphi中的IDFTP组件是用于实现FTP(文件传输协议)客户端功能的组件。
以下是使用IDFTP的基本步骤:1. 添加IDFTP组件:将IDFTP组件拖动到Delphi的窗体上或创建一个全局的IDFTP对象。
2. 设置FTP服务器信息:通过IDFTP的Host、Port和UserName属性设置FTP服务器的主机地址、端口号和用户名。
还可以设置Password属性设置登录密码。
3. 连接到FTP服务器:调用IDFTP的Connect方法来建立与FTP服务器的连接。
可以在OnConnect事件中处理连接成功之后的逻辑。
4. 执行FTP操作:通过调用IDFTP的各种方法来执行FTP操作,如上传文件、下载文件、创建目录、删除文件等。
- 使用Put方法上传文件:可以通过代码像以下示例这样上传文件:delphiIDFTP1.Put('local_file_path', 'remote_file_path');- 使用Get方法下载文件:可以通过代码像以下示例这样下载文件:delphiIDFTP1.Get('remote_file_path', 'local_file_path');- 使用MakeDir方法创建目录:可以通过代码像以下示例这样创建目录:delphiIDFTP1.MakeDir('directory_name');- 使用Delete方法删除文件:可以通过代码像以下示例这样删除文件:delphiIDFTP1.Delete('remote_file_path');5. 断开连接:使用IDFTP的Disconnect方法来断开与FTP服务器的连接。
这只是IDFTP的基本用法,还可以通过查阅IDFTP的文档来了解更多操作和事件处理的细节。
精易模块 ftp 用法
精易模块ftp 用法精易模块FTP 用法简介:精易模块(JEasy)是一款基于Visual Basic 编写的模块库,其中包含了许多对于软件开发非常有用的功能和工具。
其中包括了一个用于连接和操作FTP(文件传输协议)服务器的模块,该模块可以帮助开发人员轻松地实现文件的上传和下载功能。
本文将详细介绍精易模块FTP 的用法,并提供一步一步的指南,帮助读者快速掌握这一功能。
目录:1. 安装和配置精易模块2. 连接FTP 服务器3. 上传文件到FTP 服务器4. 从FTP 服务器下载文件5. 删除FTP 服务器上的文件6. 列出FTP 服务器上的文件7. 断开与FTP 服务器的连接1. 安装和配置精易模块首先,我们需要下载并安装精易模块库,确保它可以被我们的开发环境使用。
下载地址为:[精易模块下载地址]。
安装完成后,我们需要在我们的项目中引入JEasy 模块。
在VB 项目的工具箱中,右键单击并选择“选择项”。
在“选择项目”对话框中,找到JEasy 模块并选中它,然后点击“确定”按钮。
2. 连接FTP 服务器在我们的VB 项目中,首先需要添加以下引用:Imports Imports .SocketsImports JEASYFTP在代码中,我们需要创建一个JEASYFTP 对象来连接到FTP 服务器。
使用以下代码来实现:Dim Ftp As New FtpClsFtp.FtpConnect("ftp.example", "username", "password")在上述代码中,需要将"ftp.example" 替换为你要连接的FTP 服务器的主机名或IP 地址,"username" 替换为你的用户名,"password" 替换为你的密码。
3. 上传文件到FTP 服务器要上传文件到FTP 服务器,只需使用以下代码:Ftp.FtpPut("localfile.txt", "remotefile.txt")上述代码中,需要将"localfile.txt" 替换为本地文件的路径,"remotefile.txt" 替换为上载到FTP 服务器的文件的名称。
如何通过FTP下载文件
如何通过FTP下载文件一、什么是FTPFTP(File Transfer Protocol)即文件传输协议,是用于在计算机之间传输文件的标准协议。
通过FTP,我们可以方便地将文件从一个计算机上传到另一个计算机,或从服务器下载到本地计算机上。
二、准备工作在开始使用FTP下载文件之前,需要进行以下准备工作:1. 安装FTP客户端软件:常见的FTP软件包括FileZilla、CuteFTP、FlashFXP等。
可以根据个人需要选择合适的FTP客户端软件并安装在计算机上。
2. 获取FTP服务器信息:需要知道要从哪个FTP服务器下载文件,包括FTP服务器的地址(通常是一个IP地址或域名)、端口号、用户名和密码。
这些信息通常由FTP服务器的管理员提供。
三、使用FTP客户端下载文件的步骤1. 启动FTP客户端软件并打开连接窗口。
2. 在连接窗口中填写FTP服务器的地址、端口号、用户名和密码等信息,然后点击连接按钮。
3. 连接成功后,FTP客户端软件会显示远程服务器上的文件列表。
浏览文件列表,找到要下载的文件所在的目录。
4. 双击或右键单击要下载的文件,选择下载或保存选项。
5. 指定文件保存的路径和名称,然后点击确定按钮。
6. FTP客户端软件会开始下载文件,并显示下载进度。
下载完成后,可以在指定的路径中找到下载好的文件。
四、注意事项在通过FTP下载文件时,需要注意以下事项,以确保下载过程的顺利进行:1. 确保FTP服务器的地址、端口号、用户名和密码等信息输入正确,否则无法成功连接到FTP服务器。
2. 在下载大文件时,建议使用稳定的网络环境,并确保本地磁盘空间足够。
3. 如果下载过程中出现连接中断或下载失败等情况,可以尝试重新连接或使用其他FTP客户端软件进行下载。
4. 部分FTP服务器需要进行被动模式(PASV)设置,以允许客户端与服务器之间建立数据连接。
如果下载过程中遇到连接问题,可以尝试切换到被动模式。
五、总结通过FTP下载文件是一种常见且便利的方式,适用于从服务器下载文件到本地计算机的场景。
ftp下载
FTP下载什么是FTP下载FTP(File Transfer Protocol)是一种用于在计算机网络上传输文件的协议。
它使用客户端-服务器模式,允许用户通过一个FTP客户端连接到远程服务器,并在客户端和服务器之间传输文件。
FTP下载的步骤FTP下载通常包括以下步骤:1.创建一个FTP连接:使用FTP客户端软件(例如FileZilla、WinSCP等)创建一个与FTP服务器的连接。
通常需要提供服务器的IP地址、用户名和密码。
2.导航到目标文件夹:一旦连接成功,客户端会显示服务器上的文件和文件夹列表。
导航到您想要下载文件的目标文件夹。
3.选择文件下载:在目标文件夹中,选择您想要下载的文件。
您可以使用文件夹列表和文件列表来浏览服务器上的文件。
4.下载文件:选择文件后,右键单击文件,并选择“下载”或类似选项。
这将启动文件的下载过程,并将文件从服务器传输到您的计算机。
5.等待下载完成:在下载过程中,您可能需要等待一段时间,具体取决于文件大小和网络速度。
一旦下载完成,您将在本地计算机上看到该文件。
6.完成下载:一旦文件下载完成,您可以继续选择其他文件进行下载,或者断开与服务器的连接,完成整个FTP下载过程。
FTP下载的优点使用FTP下载文件具有许多优点,包括:1.高速传输:与通过电子邮件或其他方式发送文件相比,FTP下载能够更快地传输文件,特别是对于较大的文件。
2.简单易用:FTP客户端软件通常具有用户友好的界面,使得连接和下载文件变得非常简单。
3.大容量支持:FTP可以处理大文件的传输,而不会受限于电子邮件或云存储服务的限制。
4.可靠性:FTP下载过程中,文件传输通常具有容错和恢复机制,确保文件从服务器成功传输到本地计算机。
FTP下载的安全性考虑尽管FTP下载非常方便,但在使用FTP时需要考虑安全性问题。
以下是一些有关FTP安全性的注意事项:1.加密连接:为了防止文件传输过程中的敏感信息被窃取,使用SSL / TLS等加密连接来确保安全的数据传输。
使用ftp下载文件的流程
使用FTP下载文件的流程1. 简介FTP(File Transfer Protocol)是一种用于在计算机之间传输文件的标准网络协议。
通过FTP,用户可以在不同的系统之间进行文件上传、下载和删除等操作。
在本文中,我们将讨论如何使用FTP下载文件的流程。
2. 准备工作在使用FTP下载文件之前,我们需要进行一些准备工作。
2.1 确定FTP服务器地址和端口号首先,我们需要确定要从哪个FTP服务器下载文件。
通常,FTP服务器的地址是一个IP地址或域名,而端口号一般是21。
获取到FTP服务器的地址和端口号后,我们可以开始配置FTP客户端。
2.2 配置FTP客户端在使用FTP客户端之前,我们需要下载和安装一个FTP客户端软件。
常见的FTP客户端软件包括FileZilla、WinSCP等。
下载安装完毕后,我们需要进行一些配置。
1.打开FTP客户端软件。
2.在配置界面中,输入FTP服务器的地址和端口号。
3.输入登录凭证,包括用户名和密码。
3. 下载文件的流程下面是使用FTP下载文件的详细步骤:3.1 连接FTP服务器1.打开FTP客户端软件。
2.在主界面中,点击连接按钮或输入命令来连接FTP服务器。
3.2 浏览远程目录1.成功连接到FTP服务器后,你将看到远程目录的列表。
2.导航至所需的目录,使用cd命令或点击相应目录进行导航。
3.3 下载文件1.在远程目录中找到要下载的文件。
2.右键单击文件或选择文件并点击下载按钮。
3.指定将文件下载到本地计算机的位置。
4.点击下载按钮开始下载。
3.4 等待下载完成1.下载过程会花费一些时间,取决于文件的大小和您的网络速度。
2.在下载完成之前,请不要关闭FTP客户端或断开与FTP服务器的连接。
3.5 验证文件完整性1.下载完成后,可以使用文件管理器或计算机终端来验证文件的完整性。
2.比较本地文件的哈希值或文件大小与FTP服务器上的文件是否一致。
4. 注意事项在使用FTP下载文件时,有一些注意事项需要我们注意:•确保FTP服务器的地址和端口号是正确的。
ftp文件上传下载命令
ftp⽂件上传下载命令介绍:从本地以⽤户wasqry登录的机器1*.1**.21.67上通过ftp远程登录到ftp服务器上,登录⽤户名是lte****,以下为使⽤该连接做的实验。
查看远程ftp服务器上⽤户lte****相应⽬录下的⽂件所使⽤的命令为:ls,登录到ftp后在ftp命令提⽰符下查看本地机器⽤户wasqry相应⽬录下⽂件的命令是:!ls。
查询ftp命令可在提⽰符下输⼊:?,然后回车。
1、从远程ftp服务器下载⽂件的命令格式:get 远程ftp服务器上当前⽬录下要下载的⽂件名 [下载到本地机器上当前⽬录时的⽂件名],如:get nmap_file [nmap]意思是把远程ftp服务器下的⽂件nmap_file下载到本地机器的当前⽬录下,名称更改为nmap。
带括号表⽰可写可不写,不写的话是以该⽂件名下载。
如果要往ftp服务器上上传⽂件的话需要去修改⼀下vsftpd的配置⽂件,名称是vsftpd.conf,在/etc⽬录下。
要把其中的“#write_enable=YES”前⾯的“#”去掉并保存,然后重启vsftpd服务:sudo service vsftpd restart。
2、向远程ftp服务器上传⽂件的命令格式:put/mput 本地机器上当前⽬录下要上传的⽂件名 [上传到远程ftp服务器上当前⽬录时的⽂件名],如:put/mput sample.c [ftp_sample.c]意思是把本地机器当前⽬录下的⽂件smaple.c上传到远程ftp服务器的当前⽬录下,名称更改为ftp_sample.c。
带括号表⽰可写可不写,不写的话是以该⽂件名上传。
如图下download.sh等⽂件本位于该机器linux系统⽬录,通过如下命令,则将linux系统当前⽬录下的download.sh等⽂件上传⾄ftp服务器的当前⽬录3、最后附上ftp常⽤命令,如下所⽰:FTP>open [ftpservername],和指定的远程Linux FTP服务器连接?FTP>user [username] [password],使⽤指定远程Linux FTP服务器的⽤户登录?FTP>pwd,显⽰远程Linux FTP服务器上的当前路径?FTP>ls,列出远程Linux FTP服务器上当前路径下的⽬录和⽂件?FTP>dir,列出远程Linux FTP服务器上当前路径下的⽬录和⽂件(同上)?FTP>mkdir [foldname],在远程Linux FTP服务器上当前路径下建⽴指定⽬录?FTP>rmdir [foldname],删除远程Linux FTP服务器上当前路径下的指定⽬录?FTP>cd [foldname],更改远程Linux FTP服务器上的⼯作⽬录?FTP>delete [filename],删除远程Linux FTP服务器上指定的⽂件?FTP>rename [filename] [newfilename],重命名远程Linux FTP服务器上指定的⽂件?FTP>close,从远程Linux FTP服务器断开但保留FTP命令参数提⽰?FTP>disconnect,从远程Linux FTP服务器断开但保留FTP命令参数提⽰(同上)?FTP>bye,结束和远程Linux FTP服务器的连接。
Java使用SFTP和FTP两种连接方式实现对服务器的上传下载【我改】
Java使⽤SFTP和FTP两种连接⽅式实现对服务器的上传下载【我改】【】如何区分是需要使⽤SFTP还是FTP?【】我觉得:1、看是否已知私钥。
SFTP 和 FTP 最主要的区别就是 SFTP 有私钥,也就是在创建连接对象时,SFTP 除了⽤户名和密码外还需要知道私钥 privateKey ,如果有私钥那么就⽤ SFTP,否则就是⽤ FTP。
2、看端⼝号。
如果端⼝号是21,那么就⽤FTP,否则就⽤ SFTP===============转:Java使⽤SFTP和FTP两种连接⽅式实现对服务器的上传下载 <dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.54</version></dependency>2、SFTPUtil⼯具类:import java.io.ByteArrayInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.UnsupportedEncodingException;import java.util.Properties;import java.util.Vector;import mons.io.IOUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.jcraft.jsch.Channel;import com.jcraft.jsch.ChannelSftp;import com.jcraft.jsch.JSch;import com.jcraft.jsch.JSchException;import com.jcraft.jsch.Session;import com.jcraft.jsch.SftpException;/*** 类说明 sftp⼯具类*/public class SFTPUtil {private transient Logger log = LoggerFactory.getLogger(this.getClass());private ChannelSftp sftp;private Session session;/** SFTP 登录⽤户名*/private String username;/** SFTP 登录密码*/private String password;/** 私钥 */private String privateKey;/** SFTP 服务器地址IP地址*/private String host;/** SFTP 端⼝*/private int port;/*** 构造基于密码认证的sftp对象*/public SFTPUtil(String username, String password, String host, int port) {ername = username;this.password = password;this.host = host;this.port = port;}/*** 构造基于秘钥认证的sftp对象*/public SFTPUtil(String username, String host, int port, String privateKey) {ername = username;this.host = host;this.port = port;this.privateKey = privateKey;}public SFTPUtil(){}/*** 连接sftp服务器*/public void login(){try {JSch jsch = new JSch();if (privateKey != null) {jsch.addIdentity(privateKey);// 设置私钥}session = jsch.getSession(username, host, port);if (password != null) {session.setPassword(password);}Properties config = new Properties();config.put("StrictHostKeyChecking", "no");session.setConfig(config);session.connect();Channel channel = session.openChannel("sftp");channel.connect();sftp = (ChannelSftp) channel;} catch (JSchException e) {e.printStackTrace();}}/*** 关闭连接 server*/public void logout(){if (sftp != null) {if (sftp.isConnected()) {sftp.disconnect();}}if (session != null) {if (session.isConnected()) {session.disconnect();}}}/*** 将输⼊流的数据上传到sftp作为⽂件。
实验四 文件的上传和下载
实验四文件的上传和下载6.1.3 FTP的访问形式用户对FTP服务的访问有两种形式:匿名FTP和用户FTP。
1.匿名FTP在Internet上用户使用FTP进行文件下载操作的优点是用户可以以“匿名”方式登录远程的FTP服务器。
匿名FTP允许远程用户访问FTP服务器,前提是可以同服务器建立物理连接。
无论用户是否拥有该FTP服务器的账号,都可以使用“anonymous”用户名进行登录,一般以E-mail地址做口令。
匿名FTP服务对用户的使用有一定的限制,通常只允许用户获取文件,而不允许用户修改现有的文件或向FTP服务器传送文件,并对用户获取文件的范围也有一定的限制。
这种FTP服务比较安全,能支持大多数文件类型。
2.用户FTP用户FTP方式为已在服务器建立了特定账号的用户使用,必须以用户名和口令来登录,这种FTP应用存在一定的安全风险。
当用户从Internet或Intranet与FTP服务连接时,所使用的口令是以明文方式传输的,接触系统的任何人都可以使用相应的程序来获取该用户的账号和口令,然后盗用这些信息在系统上登录,从而对系统产生威胁。
当然,对不同的用户,FTP 往往限制某些功能,防止用户对系统进行全面的访问或完全控制。
一些通过FTP开展的商业服务,赋予用户的账号和口令都是在短期内有效的临时账号。
另外,使用FTP还需要注意“端口”号。
端口是服务器使用的一个通道,它可以让具有同样地址的服务器同时提供多种不同的功能。
例如,一个地址为211.85.193.152的服务器,可以同时作为WWW服务器和FTP服务器,WWW服务器使用端口是80,而FTP服务器使用端口21。
6.1.4 FTP的常用命令FTP服务需要FTP客户来访问。
早期的FTP客户软件是以字符为基础的,与使用DOS 命令行列出文件和复制文件相似,以字符为基础的程序用于登录到远程计算机,浏览目录及传送文件。
当然更多的是专门的FTP客户软件,基于图形用户界面的客户软件,如CuteFTP,使用更加方便,功能也更强大。
《软件质量保证与测试》试题
《软件质量保证与测试》期末考试A卷班级:姓名:学号:得分:____________________一、选择题(共20题,每小题2分,共40分。
答案填于后面答题表格中)1.HTTP是一种(b)。
A. 域名B. 协议C. 网址D. 一种高级语言名称2.在计算机网络中,通常把提供并管理共享资源的计算机称为(c)。
A. 网关B. 工作站C. 服务器D. 路由器3.在Internet上浏览网页,(b)是目前常用的Web浏览器之一。
A. HTMLB. Internet ExplorerC. YahooD. Outlook Express4.文件传输和远程登录都是互联网上的主要功能之一,它们都需要双方计算机之间建立起通信联系,二者的区别是(d)。
cA. 文件传输只能传输字符文件,不能传输图像、声音文件,而远程登录则可以B. 文件传输不必经过对方计算机的验证许可,远程登录则必须经过许可C. 文件传输只能传递文件,远程登录则不能传递文件D. 文件传输只能传输计算机上已存有的文件,远程登录则还可以直接在登录主机上进行建目录、建文件、删文件等其他操作5.如你向一台远程主机发送特定的数据包,却不想远程主机响应你的数据包。
这时你使用哪一种类型的进攻手段( b )?A.缓冲区溢出B.地址欺骗C.拒绝服务D.暴力攻击6.影响计算机信息安全的因素主要有( a )。
A.自然环境、人为失误、人为恶意破坏、软件设计不完善B.硬件故障、软件故障、系统故障、人为破坏C.局域网故障、广域网故障、国际互联网故障、Internet故障D.防火墙故障、入侵检测系统故障、病毒攻击、木马入侵7.防火墙(Firewall)是____c__。
A. 用于预防计算机被火灾烧毁B. 对计算机房采取的防火设施C. 是Internet(因特网)与Intranet(内部网)之间所采取的一种安全措施D. 用于解决计算机的使用者的安全问题8. 数据完整性指的是( c )。
前端开发中的文件上传和下载实现方法
前端开发中的文件上传和下载实现方法在现代互联网时代,文件的上传和下载是我们经常要面对的需求。
特别是在前端开发中,如何实现文件上传和下载功能是一个相当重要的课题。
本文将介绍一些前端开发中常用的文件上传和下载的实现方法。
一、文件上传的实现方法1. 表单提交方式最传统的文件上传方法就是利用表单提交。
我们可以通过创建一个包含文件输入框的表单,然后用户选择文件后,点击提交按钮将文件上传到服务器。
在HTML中,可以使用input元素的type属性为file来创建文件输入框,然后将表单的enctype属性设置为multipart/form-data,这样可以保证文件能够正确上传到服务器。
在服务端,可以使用各种后端技术来处理上传文件,如Java的Servlet、PHP、Node.js等。
2. AJAX方式使用AJAX方式实现文件上传可以实现无刷新上传,提升用户体验。
传统的表单提交会导致页面的刷新,而使用AJAX可以在不刷新页面的情况下异步上传文件。
在实现上,可以使用FormData对象来传输文件数据,并通过XMLHttpRequest 对象发送请求。
同时,通过监听上传进度事件,可以实时显示文件上传的进度。
3. 第三方库除了自己实现文件上传逻辑外,也可以使用第三方库来简化文件上传的过程。
一些流行的前端框架和库,如jQuery、React等都提供了丰富的插件或组件来方便实现文件上传功能。
这些插件和组件一般都有了良好的兼容性和一套完整的API,可以大大简化文件上传的开发流程。
二、文件下载的实现方法1. 普通链接下载最简单的文件下载方式就是提供一个普通链接,让用户点击链接后即可下载文件。
在HTML中,可以使用a标签的href属性指向文件的URL,然后点击该链接即可完成文件下载。
不过需要注意的是,在特定情况下,如需要下载大文件时,直接使用普通链接下载可能会导致浏览器崩溃或内存耗尽的问题。
2. Blob对象下载为了解决上述问题,可以使用Blob对象来进行文件下载。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Eclipse AntWith Ftp 守望幸福
一、Eclipse中配置Ant
选择Window=>Preferences
选择Ant=〉Runtime
配置Ant home,默认的话Eclipse自带,或者设置Ant Home…目录
如果Ant运行需要依赖扩展的第三方库的话,需要选中Ant Home Entries目录添加Add Jars;
如,添加Ftp需要使用到的jar包!
二、Ant 入门新建Java工程
点击Finish后
新建build.xml文件
点击完成;
选中Ant build运行;
三、Ant工具Ftp上传文件配置Ant任务:
上传前:
文件上传成功
四、Ant工具Ftp下载文件获取文件前,myget目录为空
操作结束后,刷新整个工程
目录下获取文件run.sh成功;
五、Ant工具Ftp常用参数说明
ftp子节点<fileset>指定传输文件目录和文件名;具体请参照fileset用法;。