用JAVA获取FTP文件列表
Java操作ftpClient常用方法
Java操作ftpClient常用方法1.连接FTP服务器- connect(host: String, port: int): 建立与FTP服务器的连接。
- login(username: String, password: String): 登录FTP服务器。
2.设置工作目录- changeWorkingDirectory(path: String): 切换当前工作目录。
- printWorkingDirectory(: 获取当前工作目录。
- storeFile(remoteFileName: String, inputStream: InputStream): 上传文件到FTP服务器。
4.删除文件- deleteFile(remoteFileName: String): 删除FTP服务器上的文件。
5.列出目录中的文件- listFiles(remotePath: String): 返回指定目录中的文件列表。
6.创建和删除目录- makeDirectory(directory: String): 在FTP服务器上创建目录。
- removeDirectory(directory: String): 删除FTP服务器上的目录。
7.设置传输模式和文件类型- setFileType(fileType: int): 设置文件类型(ASCII或二进制)。
- setFileTransferMode(mode: int): 设置传输模式(主动或被动)。
8.设置数据连接模式- enterLocalPassiveMode(: 设置被动模式。
- enterLocalActiveMode(: 设置主动模式。
9.设置缓冲大小和字符编码- setBufferSize(bufferSize: int): 设置缓冲区大小。
- setControlEncoding(encoding: String): 设置字符编码。
10.断开与FTP服务器的连接- logout(: 登出FTP服务器。
java实现ftp的几种方式_java实现ftp的几种方式
java实现ftp的几种方式(第3方包)最近在做ssh ,sftp。
顺便总结一下java实现ftp的几种方式。
.StringTokenizer;public class FtpUpfile {private FtpClient ftpclient;private String ipAddress;private int ipPort;private String userName;private String PassWord;/*** 构造函数* @param ip String 机器IP* @param port String 机器FTP端口号* @param username String FTP用户名* @param password String FTP密码* @throws Exception*/public FtpUpfile(String ip, int port, String username, String password) throws Exception {ipAddress = new String(ip);ipPort = port;ftpclient = new FtpClient(ipAddress, ipPort);//ftpclient = new FtpClient(ipAddress);userName = new String(username);PassWord = new String(password);}/*** 构造函数* @param ip String 机器IP,默认端口为21* @param username String FTP用户名* @param password String FTP密码* @throws Exception*/public FtpUpfile(String ip, String username, String password) throws Exception {ipAddress = new String(ip);ipPort = 21;ftpclient = new FtpClient(ipAddress, ipPort);//ftpclient = new FtpClient(ipAddress);userName = new String(username);PassWord = new String(password);}/*** 登录FTP服务器* @throws Exception*/public void login() throws Exception {ftpclient.login(userName, PassWord);}/*** 退出FTP服务器* @throws Exception*/public void logout() throws Exception {//用ftpclient.closeServer()断开FTP出错时用下更语句退出ftpclient.sendServer("QUIT\r\n");int reply = ftpclient.readServerResponse(); //取得服务器的返回信息}/*** 在FTP服务器上建立指定的目录,当目录已经存在的情下不会影响目录下的文件,这样用以判断FTP* 上传文件时保证目录的存在目录格式必须以"/"根目录开头* @param pathList String* @throws Exception*/public void adServerResponse();}ftpclient.binary();}/*** 取得指定目录下的所有文件名,不包括目录名称* 分析nameList得到的输入流中的数,得到指定目录下的所有文件名* @param fullPath String* @return ArrayList* @throws Exception*/public ArrayList fileNames(String fullPath) throws Exception {ftpclient.ascii(); //注意,使用字符模式TelnetInputStream list = List(fullPath);byte[] names = new byte[2048];int bufsize = 0;bufsize = list.read(names, 0, names.length); //从流中读取list.close();ArrayList namesList = new ArrayList();int i = 0;int j = 0;while (i < bufsize /*names.length*/) {//char bc = (char) names;//System.out.println(i + " " + bc + " : " + (int) names);//i = i + 1;if (names[i] == 10) { //字符模式为10,二进制模式为13//文件名在数据中开始下标为j,i-j为文件名的长度,文件名在数据中的结束下标为i -1//System.out.write(names, j, i - j);//System.out.println(j + " " + i + " " + (i - j));String tempName = new String(names, j, i - j);namesList.add(tempName);//System.out.println(temp);// 处理代码处//j = i + 2; //上一次位置二进制模式j = i + 1; //上一次位置字符模式}i = i + 1;}return namesList;}/*** 上传文件到FTP服务器,destination路径以FTP服务器的"/"开始,带文件名、* 上传文件只能使用二进制模式,当文件存在时再次上传则会覆盖* @param source String* @param destination String* @throws Exception*/public void upFile(String source, String destination) throws Exception { buildList(destination.substring(0, stIndexOf("/")));ftpclient.binary(); //此行代码必须放在buildList之后TelnetOutputStream ftpOut = ftpclient.put(destination);TelnetInputStream ftpIn = new TelnetInputStream(newFileInputStream(source), true);byte[] buf = new byte[204800];int bufsize = 0;while ((bufsize = ftpIn.read(buf, 0, buf.length)) != -1) {ftpOut.write(buf, 0, bufsize);}ftpIn.close();ftpOut.close();}ush();ftpOut.close();}/*** 从FTP文件服务器上下载文件SourceFileName,到本地destinationFileName * 所有的文件名中都要求包括完整的路径名在内* @param SourceFileName String* @param destinationFileName String* @throws Exception*/public void downFile(String SourceFileName, String destinationFileName) throws Exception {ftpclient.binary(); //一定要使用二进制模式TelnetInputStream ftpIn = ftpclient.get(SourceFileName);byte[] buf = new byte[204800];int bufsize = 0;FileOutputStream ftpOut = new FileOutputStream(destinationFileName);while ((bufsize = ftpIn.read(buf, 0, buf.length)) != -1) {ftpOut.write(buf, 0, bufsize);}ftpOut.close();ftpIn.close();}/***从FTP文件服务器上下载文件,输出到字节数组中* @param SourceFileName String* @return byte[]* @throws Exception*/public byte[] downFile(String SourceFileName) throwsException {ftpclient.binary(); //一定要使用二进制模式TelnetInputStream ftpIn = ftpclient.get(SourceFileName);ByteArrayOutputStream byteOut = new ByteArrayOutputStream();byte[] buf = new byte[204800];int bufsize = 0;while ((bufsize = ftpIn.read(buf, 0, buf.length)) != -1) {byteOut.write(buf, 0, bufsize);}byte[] return_arraybyte = byteOut.toByteArray();byteOut.close();ftpIn.close();return return_arraybyte;}/**调用示例* FtpUpfile fUp = new FtpUpfile("192.150.189.22", 21, "admin", "admin");* fUp.login();* fUp.buildList("/adfadsg/sfsdfd/cc");* String destination = "/test.zip";* fUp.upFile("C:\\Documents and Settings\\Administrator\\My Documents\\sample.zi p",destination);* ArrayList filename = fUp.fileNames("/");* for (int i = 0; i < filename.size(); i++) {* System.out.println(filename.get(i).toString());* }* fUp.logout();* @param args String[]* @throws Exception*/public static void main(String[] args) throws Exception {FtpUpfile fUp = new FtpUpfile("172.16.0.142", 22, "ivr", "ivr");fUp.login();/* fUp.buildList("/adfadsg/sfsdfd/cc");String destination = "/test/SetupDJ.rar";fUp.upFile("C:\\Documents and Settings\\Administrator\\My Documents\\SetupDJ.rar", destination);ArrayList filename = fUp.fileNames("/");for (int i = 0; i < filename.size(); i++) {System.out.println(filename.get(i).toString());}fUp.downFile("/sample.zip", "d:\\sample.zip");*/FileInputStream fin = new FileInputStream("d:\\wapPush.txt");byte[] data = new byte[20480000];fin.read(data, 0, data.length);fUp.upFile(data, "/home/cdr/wapPush.txt");fUp.logout();System.out.println("程序运行完成!");/*FTP远程命令列表USER PORT RETR ALLO DELE SITE XMKD CDUP FEATPASS PASV STOR REST CWD STAT RMD XCUP OPTSACCT TYPE APPE RNFR XCWD HELP XRMD STOU AUTH REIN STRU SMNT RNTO LIST NOOP PWD SIZE PBSZQUIT MODE SYST ABOR NLST MKD XPWD MDTM PROT *//*在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上\r\nftpclient.sendServer("XMKD /test/bb\r\n"); //执行服务器上的FTP命令ftpclient.readServerResponse一定要在sendServer后调用nameList("/test")获取指目录下的文件列表XMKD建立目录,当目录存在的情况下再次创建目录时报错XRMD删除目录DELE删除文件*/}}package com.ftp;p.FTPFile;import .ftp.FTPFileEntryParser;import .TelnetInputStream;public class FtpAppache {public FtpAppache() throws Exception{// .ftp.FtpClient ft = null;// TelnetInputStream t = ft.list();// t.setStickyCRLF(true);}public void test1() throws Exception {//String strTemp = "";//InetAddress ia = InetAddress.getByName("192.168.0.193");FTPClient ftp = new FTPClient();ftp.connect("172.16.0.142",22);boolean blogin = ftp.login("ivr", "ivr");if (!blogin) {System.out.println("连接失败");();ftp = null;return;}/*//如果是中文名必需进行字符集转换boolean bMakeFlag = ftp.makeDirectory(new String("测试目录".getBytes( "gb2312"), "iso-8859-1")); //在服务器创建目录//上传文件到服务器,目录自由创建File file = new File("c:\\test.properties");ftp.storeFile("test.properties",new FileInputStream(file));*/System.out.println(SystemName());FTPFile[] ftpFiles = ();if (ftpFiles != null) {for (int i = 0; i < ftpFiles.length; i++) {System.out.println(ftpFiles[i].getName());//System.out.println(ftpFiles[i].isFile());if (ftpFiles[i].isFile()) {FTPFile ftpf = new FTPFile();/*System.err.println(ftpf.hasPermission(FTPFile.GROUP_ACCESS,FTPFile.EXECUTE_PERMISSION));System.err.println("READ_PERMISSION="+ftpf.hasPermission( ER_ACCESS,FTPFile.READ_PERMISSION));System.err.println("EXECUTE_PERMISSION="+ftpf.hasPermission(FTPFile. USER_ACCESS,FTPFile.EXECUTE_PERMISSION));System.err.println("WRITE_PERMISSION="+ftpf.hasPermission(FTPFile.U SER_ACCESS,FTPFile.WRITE_PERMISSION));System.err.println(ftpf.hasPermission(FTPFile.WORLD_ACCESS,FTPFile.READ_PERMISSION));*/}//System.out.println(ftpFiles[i].getUser());}}//下载服务器文件FileOutputStream fos = new FileOutputStream("e:/proftpd-1.2.10.tar.gz");ftp.retrieveFile("proftpd-1.2.10.tar.gz",fos);fos.close();//改变ftp目录//ftp.changeToParentDirectory();//回到父目录//ftp.changeWorkingDirectory("");//转移工作目录//pletePendingCommand();////删除ftp服务器文件//ftp.deleteFile("");//注销当前用户,//ftp.logout();//ftp.structureMount("");();ftp = null;}/*** 封装好的东西是好用,碰到这种问题,我们就。
java 根据路径获取文件方法
java 根据路径获取文件方法Java是一种广泛应用于软件开发的高级编程语言。
在Java中,我们经常需要根据路径获取文件。
本文将介绍如何使用Java来实现这一功能,并提供一步一步的指导。
第一步:导入相关的Java类库要使用Java来获取文件,我们需要导入相关的Java类库。
在这个场景下,我们需要导入java.io类库中的File类。
在Java中,File类提供了一些方法来操作文件和目录。
要导入File类,我们可以在Java源文件的开头添加以下代码:javaimport java.io.File;第二步:创建File对象在Java中,要获取文件,我们需要先创建一个File对象。
File对象代表文件系统中的一个文件或目录。
我们可以使用其构造函数来创建一个File 对象,构造函数可以接受文件路径作为参数。
以下是一个创建File对象的示例代码:javaString path = "C:\\myFolder\\myFile.txt";File file = new File(path);在上面的示例中,我们创建了一个名为file的File对象,该对象代表了路径为C:\myFolder\myFile.txt的文件。
请注意,在Java中,文件路径使用双反斜杠(\)来表示文件分隔符。
第三步:检查文件是否存在在创建File对象后,我们可以使用其exists()方法来检查文件是否存在。
exists()方法返回一个布尔值,如果文件存在,则返回true,否则返回false。
以下是一个检查文件是否存在的示例代码:javaif (file.exists()) {System.out.println("文件存在");} else {System.out.println("文件不存在");}第四步:获取文件的绝对路径要获取文件的绝对路径,我们可以使用File对象的getAbsolutePath()方法。
ftpclient方法
ftpclient方法FTPClient方法是一种用于实现FTP(File Transfer Protocol,文件传输协议)客户端的方法。
通过使用FTPClient方法,我们可以实现与FTP服务器的连接、文件上传、文件下载、文件删除等操作。
下面将详细介绍FTPClient方法的使用。
一、连接FTP服务器在使用FTPClient方法进行文件传输之前,首先需要与FTP服务器建立连接。
可以通过以下代码实现与FTP服务器的连接:```javaFTPClient ftpClient = new FTPClient();ftpClient.connect(server, port);ftpClient.login(username, password);```其中,server是FTP服务器的IP地址,port是FTP服务器的端口号,username和password分别是登录FTP服务器的用户名和密码。
二、上传文件至FTP服务器使用FTPClient方法可以方便地将本地文件上传至FTP服务器。
可以通过以下代码实现文件上传:```javaFile file = new File(localFilePath);InputStream inputStream = new FileInputStream(file);ftpClient.storeFile(remoteFilePath, inputStream);```其中,localFilePath是本地文件的路径,remoteFilePath是上传至FTP服务器后的文件路径。
三、从FTP服务器下载文件使用FTPClient方法可以方便地从FTP服务器下载文件。
可以通过以下代码实现文件下载:```javaOutputStream outputStream = new FileOutputStream(localFilePath);ftpClient.retrieveFile(remoteFilePath, outputStream);```其中,localFilePath是文件下载后保存的本地路径,remoteFilePath是FTP服务器上待下载文件的路径。
java通过文件路径读取该路径下的所有文件并将其放入list中
java通过⽂件路径读取该路径下的所有⽂件并将其放⼊list中java通过⽂件路径读取该路径下的所有⽂件并将其放⼊list中java中可以通过递归的⽅式获取指定路径下的所有⽂件并将其放⼊List集合中。
假设指定路径为path,⽬标集合为fileList,遍历指定路径下的所有⽂件,如果是⽬录⽂件则递归调⽤,如果是普通⽂件则放⼊fileList中。
根据这个思路,得到java源代码如下所⽰://⽅法getFiles根据指定路径获取所有的⽂件public ArrayList<File> getFiles(String path) throws Exception { //⽬标集合fileList ArrayList<File> fileList = new ArrayList<File>(); File file = new File(path); if(file.isDirectory()){ File []files = file.listFiles(); for(File fileIndex:files){ //如果这个⽂件是⽬录,则进⾏递归搜索 if(fileIndex.isDirectory()){ getFiles(fileIndex.getPath()); }else { //如果⽂件是普通⽂件,则将放⼊集合中 fileList.add(fileIndex); } }} return fileList;}获取⽂件名:fileList = getFiles(this.getMenuPath());ArrayList<String> iconNameList = new ArrayList<String>();//返回⽂件名数组for(int i=0;i<fileList.size();i++){String curpath = fileList.get(i).getPath();//获取⽂件路径iconNameList.add(curpath.substring(stIndexOf("\\")+1));//将⽂件名加⼊数组}其中,在action中声明变量menuPath,并⽣成get和set⽅法: private String menuPath = "/resources/menuIcon";则this.getMenuPath()可以获取该路径,传⼊getFiles()⽅法时,该路径变为访问的绝对路径,例如“D:\\tomcat\\...\\resources\\menuIcon”。
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把该文件传送到本地。
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说明下载成功}。
java获取文件夹下所有文件的名称
如果想要获得当前文件中的文件名只需要String [] fileName = file.list();就可以了。
如果要包括文件中的文件名就可以用递归的方式。
下面是两个具体的实现。
其中public static String [] getFileName(String path)是只得到当前文件中的文件名。
public static void getAllFileName(String path,ArrayList<String> fileName)是包括当前文件及其子文件的文件名。
public class GetFileName{public static String [] getFileName(String path){File file = new File(path);String [] fileName = file.list();return fileName;}public static void getAllFileName(String path,ArrayList<String> fileName){File file = new File(path);File [] files = file.listFiles();String [] names = file.list();if(names != null)fileName.addAll(Arrays.asList(names));for(File a:files){if(a.isDirectory()){getAllFileName(a.getAbsolutePath(),fileName);}}}public static void main(String[] args){String [] fileName = getFileName("F:\\xiaoshuo");for(String name:fileName){System.out.println(name);}System.out.println("--------------------------------");ArrayList<String> listFileName = new ArrayList<String>();getAllFileName("F:\\xiaoshuo",listFileName); for(String name:listFileName){System.out.println(name);}}}运行时需要更改一下具体的文件夹。
java 获取指定类型文件的方法
一、介绍在编程领域,经常会有需要获取指定类型的文件的需求,特别是在Java开发中。
Java作为一种面向对象的程序设计语言,提供了丰富的API和库,使得获取指定类型文件的操作变得相对简单。
本文将介绍Java中获取指定类型文件的方法,以及在实际项目开发中的应用。
二、使用File类的listFiles()方法Java中的File类提供了用于文件操作的大量方法,其中listFiles()方法可以获取指定目录下的所有文件和子目录。
我们可以结合文件过滤器来获取指定类型的文件。
1. 使用FilenameFilter过滤器我们可以实现一个FilenameFilter接口的实例,然后将其传递给listFiles()方法,以获得指定类型的文件列表。
以下为一个示例代码:```javaFile folder = new File("D:/documents");File[] files = folder.listFiles(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {return name.endsWith(".txt");}});```上述代码中,我们通过传递一个实现FilenameFilter接口的匿名类来过滤出所有以“.txt”结尾的文件。
2. 使用FileFilter过滤器除了FilenameFilter外,我们还可以使用FileFilter接口来实现文件过滤。
FileFilter接口只包含一个accept()方法,用于过滤文件。
以下为一个示例代码:```javaFile folder = new File("D:/documents");File[] files = folder.listFiles(new FileFilter() {@Overridepublic boolean accept(File pathname) {return pathname.getName().endsWith(".txt");}});上述代码中,我们通过传递一个实现FileFilter接口的匿名类来过滤出所有以“.txt”结尾的文件。
java获取文件内容的方法
java获取文件内容的方法Java是一种功能强大的编程语言,它提供了丰富的API(应用程序接口)来操作文件和读取文件内容。
在本文中,我们将介绍几种常用的方法来获取文件内容。
1. 使用File类Java中的File类提供了许多方法来操作文件。
要获取文件内容,我们可以使用File类的方法之一——`readLines()`。
这个方法会将文件的内容读取到一个字符串列表中,每一行作为一个元素。
```javaimport java.io.File;import java.io.IOException;import java.nio.file.Files;import java.util.List;public class ReadFileExample {public static void main(String[] args) {File file = new File("path/to/file.txt");try {List<String> lines = Files.readAllLines(file.toPath());for (String line : lines) {System.out.println(line);}} catch (IOException e) {e.printStackTrace();}}}```在上面的示例中,我们首先创建一个File对象,指定要读取的文件的路径。
然后,我们使用Files类的`readAllLines()`方法将文件内容读取到一个字符串列表中。
最后,我们使用循环遍历这个列表,并输出每一行的内容。
2. 使用BufferedReader类除了使用File类,我们还可以使用BufferedReader类来读取文件内容。
这个类提供了一种更高效的方式来逐行读取文件。
```javaimport java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class ReadFileExample {public static void main(String[] args) {String filePath = "path/to/file.txt";try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {String line;while ((line = reader.readLine()) != null) {System.out.println(line);}} catch (IOException e) {e.printStackTrace();}}}```在上面的示例中,我们首先创建一个BufferedReader对象,使用FileReader来读取文件。
JavaFTP下载文件以及编码问题小结
JavaFTP下载⽂件以及编码问题⼩结问题之前在开发过程中,遇到了⼀点问题,我要访问⼀个FTP服务器去下载⽂件详细情况如下:1. 需要传⼊⼀个可能为中⽂的⽂件名;2. 通过⽂件名去FTP上寻找该⽂件;3. FTP服务器的命名编码为“GBK”;思路1.通过GET⽅法直接将⽂件名负载URL后⾯,但需要通过转码;2.在Java Controller中收到参数后,进⾏解码,解码为正常数据;3.⽤正常数据再转码为GBK,到Service中去调⽤FTP即可4.(因公司安全考虑,我们需要在另⼀个模块中调⽤FTP)通过rest接⼝将⽂件名传出,另⼀模块获取到⽂件流转换为byte[]传回,调⽤response输出即可总结编码问题的解决⽅案:Jquery对URL以及参数转码,据我所了解的主要应⽤encodeURI、encodeURIComponent,例如我需要传⼊变量名为fileDepencevar downloadDepence=fileID+"-"+filename;window.location.href=encodeURI(ajaxurl+"/coadownload/downloadFile?fileDepence="+encodeURIComponent(downloadDepence));这样我在后台就可以接收到转码过后的fileDepence这个串,通过验证encodeURIComponent会以“utf-8”进⾏转码,所以我们使⽤Java对其解码:String viewItem=.URLDecoder.decode(fileDepence, "utf-8");这样得到的viewItem就与我们原本要传⼊的值⼀致了,如果传⼊的为中⽂⽂件名,则此时viewItem便是对应的中⽂⽂件名了。
之后我⼜了解⼀下,通过JS来完成GBK的转码⽐较⿇烦,⽽采⽤Unicode的Java则⽐较⽅法,则同理,我们使⽤viewItem在以GBK来转⼀次码,就可以得到对应的FTP服务器中的⽂件名了。
springboot如何读取sftp的文件
springboot如何读取sftp的⽂件⽬录springboot读取sftp的⽂件1.添加pom依赖(基于springboot项⽬)2.application.yaml配置⽂件3.⼯具类4.实际调⽤springboot使⽤SFTP⽂件上传springboot读取sftp的⽂件1.添加pom依赖(基于springboot项⽬)<dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.54</version></dependency>2.application.yaml配置⽂件sftp:ip: 192.168.1.102port: 22username: adminpassword: adminroot: /img #⽂件根⽬录3.⼯具类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;import lombok.extern.slf4j.Slf4j;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.Properties;import java.util.concurrent.TimeUnit;/****/@Slf4jpublic class SFTPUtil {/*** 下载重试次数*/private static final int DOWNLOAD_RETRY = 3;/*** 下载重试间隔时间单位毫秒*/private static final long DOWNLOAD_SLEEP = 3 * 1000;private static final SFTPUtil SFTP = new SFTPUtil();private static ChannelSftp client;private static Session session;/*** @return*/public static SFTPUtil getInstance() {/*** 获取SFTP连接** @param username* @param password* @param ip* @param port* @return*/synchronized public ChannelSftp makeConnection(String username, String password, String ip, int port) {if (client == null || session == null || !client.isConnected() || !session.isConnected()) {try {JSch jsch = new JSch();session = jsch.getSession(username, ip, port);if (password != null) {session.setPassword(password);}Properties config = new Properties();// 设置第⼀次登陆的时候主机公钥确认提⽰,可选值:(ask | yes | no)config.put("StrictHostKeyChecking", "no");session.setConfig(config);session.connect();//sftp协议Channel channel = session.openChannel("sftp");channel.connect();client = (ChannelSftp) channel;("sftp connected success,connect to [{}:{}], username [{}]", ip, port, username);} catch (JSchException e) {log.error("sftp connected fail,connect to [{}:{}], username [{}], password [{}], error message : [{}]", ip, port, username, password, e.getMessage()); }}return client;}/**** 关闭连接 server*/public static void close() {if (client != null && client.isConnected()) {client.disconnect();}if (session != null && session.isConnected()) {session.disconnect();}}/*** 单次下载⽂件** @param downloadFile 下载⽂件地址* @param saveFile 保存⽂件地址* @param ip 主机地址* @param port 主机端⼝* @param username ⽤户名* @param password 密码* @param rootPath 根⽬录* @return*/public synchronized static File download(String downloadFile, String saveFile, String ip, Integer port, String username, String password, String rootPath) { boolean result = false;File file = null;Integer i = 0;while (!result) {//获取连接ChannelSftp sftp = getInstance().makeConnection(username, password, ip, port);FileOutputStream fileOutputStream = null;("sftp file download start, target filepath is {}, save filepath is {}", downloadFile, saveFile);try {sftp.cd(rootPath);file = new File(saveFile);if (file.exists()) {file.delete();} else {file.createNewFile();}fileOutputStream = new FileOutputStream(file);result = true;} catch (FileNotFoundException e) {log.error("sftp file download fail, FileNotFound: [{}]", e.getMessage());} catch (IOException e) {log.error("sftp file download fail, IOException: [{}]", e.getMessage());} catch (SftpException e) {i++;log.error("sftp file download fail, sftpException: [{}]", e.getMessage());if (i > DOWNLOAD_RETRY) {log.error("sftp file download fail, retry three times, SftpException: [{}]", e.getMessage()); return file;}try {LISECONDS.sleep(DOWNLOAD_SLEEP);} catch (InterruptedException ex) {ex.printStackTrace();}} finally {try {fileOutputStream.close();} catch (IOException e) {e.printStackTrace();}}SFTPUtil.close();}return file;}/*** 下载⽂件** @param downloadFile 下载⽂件的路径* @param saveFile 保存的路径* @param rootPath 根⽬录* @return*/public synchronized static File download(String downloadFile, String saveFile, String rootPath) {boolean result = false;File file = null;Integer i = 0;while (!result) {FileOutputStream fileOutputStream = null;("sftp file download start, target filepath is {}, save filepath is {}", downloadFile, saveFile); try {//获取连接、读取⽂件(ChannelSftp) session.openChannel("sftp")client.cd(rootPath);file = new File(saveFile);if (file.exists()) {file.delete();} else {file.createNewFile();}fileOutputStream = new FileOutputStream(file);client.get(downloadFile, fileOutputStream);result = true;} catch (FileNotFoundException e) {log.error("sftp file download fail, FileNotFound: [{}]", e.getMessage());} catch (IOException e) {log.error("sftp file download fail, IOException: [{}]", e.getMessage());} catch (SftpException e) {i++;log.error("sftp file download fail, sftpException: [{}]", e.getMessage());if (i > DOWNLOAD_RETRY) {log.error("sftp file download fail, retry three times, SftpException: [{}]", e.getMessage()); return file;}try {LISECONDS.sleep(DOWNLOAD_SLEEP);} catch (InterruptedException ex) {ex.printStackTrace();}} finally {try {if (fileOutputStream != null) {fileOutputStream.close();}e.printStackTrace();}}}return file;}}4.实际调⽤public class SFTP {@Value("${sftp.ip}")String ip;@Value("${sftp.port}")Integer port;@Value("${ername}")String username;@Value("${sftp.password}")String password;@Value("${sftp.root}")String rootPath;@GetMapping("/test")public void test() throws IOException {SFTPUtil.getInstance().makeConnection(username, password, ip, port);File file= SFTPUtil.download(downloadFilePath, "1.txt", rootPath);SFTPUtil.close();InputStreamReader read = null;BufferedReader bufferedReader = null;String encoding = "utf-8";try {read = new InputStreamReader(new FileInputStream(file), encoding);bufferedReader = new BufferedReader(read);String lineTxt = null;while ((lineTxt = bufferedReader.readLine()) != null) {("[{}] downfile is [{}] ", username, lineTxt);}read.close();bufferedReader.close();file.delete();} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {if (read != null) {read.close();}if (bufferedReader != null) {bufferedReader.close();}if (file != null && file.exists()) {file.delete();}} catch (IOException e) {e.printStackTrace();}}}}springboot使⽤SFTP⽂件上传最近在⼯作功能使⽤了sftp做⽂件上传下载的功能,在这⾥简单的记录⼀下pom⽂件中引⼊相关的jar包<groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.54</version></dependency>建⽴springboot项⽬,在application.properties添加如下配置sftp.ip=127.0.0.1sftp.port=22ername=xuyysftp.password=paswpord#ftp根⽬录sftp.rootpath="D:SFTP/上⾯⼀sftp开头的都是⾃定义配置,需要写个配置类读取⼀下,⾃动注⼊到springboot中package com.uinnova.ftpsynweb.config;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import ponent;/*** 特点:读取配置⽂件。
Java8实现FTP及SFTP文件上传下载
Java8实现FTP及SFTP⽂件上传下载有⽹上的代码,也有⾃⼰的理解,代码备份 ⼀般连接windows服务器使⽤FTP,连接linux服务器使⽤SFTP。
linux都是通过SFTP上传⽂件,不需要额外安装,⾮要使⽤FTP的话,还得安装FTP服务(虽然刚开始我就是这么⼲的)。
另外就是jdk1.8和jdk1.7之前的⽅法有些不同,⽹上有很多jdk1.7之前的介绍,本篇是jdk1.8的添加依赖Jsch-0.1.54.jar<!-- https:///artifact/com.jcraft/jsch --><dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.54</version></dependency>FTP上传下载⽂件例⼦import .ftp.FtpClient;import .ftp.FtpProtocolException;import java.io.*;import .InetSocketAddress;import .SocketAddress;/*** Java⾃带的API对FTP的操作*/public class Test {private FtpClient ftpClient;Test(){/*使⽤默认的端⼝号、⽤户名、密码以及根⽬录连接FTP服务器*/this.connectServer("192.168.56.130", 21, "jiashubing", "123456", "/home/jiashubing/ftp/anonymous/");}public void connectServer(String ip, int port, String user, String password, String path) {try {/* ******连接服务器的两种⽅法*******/ftpClient = FtpClient.create();try {SocketAddress addr = new InetSocketAddress(ip, port);ftpClient.connect(addr);ftpClient.login(user, password.toCharArray());System.out.println("login success!");if (path.length() != 0) {//把远程系统上的⽬录切换到参数path所指定的⽬录ftpClient.changeDirectory(path);}} catch (FtpProtocolException e) {e.printStackTrace();}} catch (IOException ex) {ex.printStackTrace();throw new RuntimeException(ex);}}/*** 关闭连接*/public void closeConnect() {try {ftpClient.close();System.out.println("disconnect success");} catch (IOException ex) {System.out.println("not disconnect");ex.printStackTrace();throw new RuntimeException(ex);}}/*** 上传⽂件* @param localFile 本地⽂件* @param remoteFile 远程⽂件*/public void upload(String localFile, String remoteFile) {File file_in = new File(localFile);try(OutputStream os = ftpClient.putFileStream(remoteFile);FileInputStream is = new FileInputStream(file_in)) {byte[] bytes = new byte[1024];int c;while ((c = is.read(bytes)) != -1) {os.write(bytes, 0, c);}System.out.println("upload success");} catch (IOException ex) {System.out.println("not upload");ex.printStackTrace();} catch (FtpProtocolException e) {e.printStackTrace();}}/*** 下载⽂件。
ftpclient.listfiles的用法
ftpclient.listfiles的用法FTPClient.listFiles()是Apache Commons Net库中FTPClient类提供的方法之一,用于列出远程FTP服务器上的文件和目录列表。
这个方法返回一个包含FTPFile 对象的数组,每个FTPFile对象代表远程服务器上的一个文件或目录。
用法示例:import org.apache.c.t.ftp.FTPClient;import org.apache.c.n.ftp.FTPFile;import java.io.IOException;public class FTPExample{public static void main(String[]args){FTPClient ftpClient=new FTPClient();try{//连接到FTP服务器ftpClient.connect("ftp.example");ftpClient.login("username","password");//列出远程目录下的文件和子目录FTPFile[]files=ftpClient.listFiles("/remote/directory");//遍历文件列表并输出文件名for(FTPFile file:files){String details=file.getName();if(file.isDirectory()){details="["+details+"]";}System.out.println(details);}//关闭连接ftpClient.logout();ftpClient.disconnect();}catch(IOException e){e.printStackTrace();}}}此示例连接到FTP服务器,列出指定远程目录下的文件和子目录,并打印它们的名称。
java sftp 读写
java sftp 读写【最新版】目录1.Java SFTP 简介2.Java SFTP 读操作3.Java SFTP 写操作4.Java SFTP 应用实例正文【Java SFTP 简介】Java SFTP(Java Secure File Transfer Protocol)是 Java 中用于实现安全文件传输的一种协议。
与传统的 FTP 相比,SFTP 提供了更加安全的文件传输方式,可以有效防止数据在传输过程中的泄露、篡改等问题。
在 Java 语言中,可以通过 JSch 库来实现 SFTP 的读写操作。
【Java SFTP 读操作】Java SFTP 的读操作主要包括以下几种:1.连接 SFTP 服务器使用 JSch 库中的JSch.connect() 方法可以连接到 SFTP 服务器,需要提供服务器地址、端口、用户名和密码等信息。
2.获取远程目录列表通过调用 JSch.ls() 方法可以获取远程目录的列表,该方法会返回一个 FileList 对象,包含了远程目录中的所有文件和子目录。
3.读取文件内容使用 JSch.get() 方法可以读取远程文件的内容,该方法需要提供文件的路径,可以返回文件的内容。
【Java SFTP 写操作】Java SFTP 的写操作主要包括以下几种:1.上传文件通过调用 JSch.put() 方法可以上传文件到远程服务器,该方法需要提供本地文件路径和远程文件路径。
2.创建目录使用 JSch.mkdir() 方法可以创建远程目录,该方法需要提供目录的路径。
3.写入文件内容通过调用 JSch.write() 方法可以向远程文件写入内容,该方法需要提供文件的路径和要写入的内容。
【Java SFTP 应用实例】假设我们有一个 Java 应用程序,需要将本地文件 upload.txt 上传到远程服务器,并在上传成功后删除本地文件。
以下是一个简单的 Java SFTP 应用实例:```javaimport com.jcraft.jsch.Channel;import com.jcraft.jsch.ChannelSftp;import com.jcraft.jsch.JSch;import com.jcraft.jsch.Session;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;public class SFTPExample {public static void main(String[] args) {String host = "localhost";int port = 22;String user = "username";String password = "password";String localFilePath = "upload.txt";String remoteFilePath ="/path/to/remote/upload.txt";JSch jsch = new JSch();Session session = null;Channel channel = null;ChannelSftp channelSftp = null;try {// 连接 SFTP 服务器session = jsch.getSession(user, host, port);session.setPassword(password);session.setConfig("StrictHostKeyChecking", "no");session.connect();// 打开 SFTP 通道channel = session.openChannel("sftp");channel.connect();channelSftp = (ChannelSftp) channel;// 读取本地文件内容File localFile = new File(localFilePath);FileInputStream fis = newFileInputStream(localFile);byte[] buffer = new byte[1024];int len;while ((len = fis.read(buffer))!= -1) {channelSftp.put(remoteFilePath, buffer, 0, len);}// 关闭资源fis.close();channelSftp.exit();channel.disconnect();session.disconnect();// 删除本地文件localFile.delete();System.out.println("文件上传成功,本地文件已删除。
java实现FTP源代码
package ftpclient;import java.awt.*;import java.awt.event.*;import javax.swing.*;import yout.*;import java.beans.*;import java.io.*;import .TelnetInputStream;import .ftp.*;import ng.Object;import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel;import javax.swing.JTextField;import javax.swing.JCheckBox;import javax.swing.tree.TreePath;import .TelnetOutputStream;import java.util.Properties;/*** <p>Title: an example</p>* <p>Description:an no</p>* <p>Copyright: Copyright (c) 2002</p>* <p>Company: home</p>* @author liujun* @version 1.0*/public class Frame1 extends JFrame {private JPanel contentPane;private JTextField jTextField1 = new JTextField(); private JTextField jTextField2 = new JTextField(); private JTextField jTextField3 = new JTextField(); private JCheckBox jCheckbox1 = new JCheckBox();FtpClient ftp=null;JTabbedPane jTabbedPane1 = new JTabbedPane(); JPanel jPanel1 = new JPanel();JPanel jPanel2 = new JPanel();PaneLayout paneLayout1 = new PaneLayout(); XYLayout xYLayout1 = new XYLayout();JLabel jLabel1 = new JLabel();JLabel jLabel2 = new JLabel();JLabel jLabel3 = new JLabel();JTextField jTextField4 = new JTextField();JLabel jLabel4 = new JLabel();BorderLayout borderLayout1 = new BorderLayout();Box box1;JPanel jPanel3 = new JPanel();JPanel jPanel4 = new JPanel();XYLayout xYLayout2 = new XYLayout();BorderLayout borderLayout2 = new BorderLayout();JScrollPane jScrollPane1 = new JScrollPane();JButton jButton3 = new JButton();JButton jButton4 = new JButton();JScrollPane jScrollPane2 = new JScrollPane();//定义树节点,模型和树视图DefaultMutableTreeNode root2 = new DefaultMutableTreeNode("目录中没有文件"); DefaultTreeModel model2 = new DefaultTreeModel(root2);JTree jTree2 = new JTree(model2);JButton jButton5 = new JButton();JLabel statusLabel = new JLabel();List list1 = new List();JScrollPane jScrollPane3 = new JScrollPane();JTextArea jTextArea1 = new JTextArea();JButton jButton1 = new JButton();JButton jButton2 = new JButton();JLabel jLabel5 = new JLabel();JLabel jLabel6 = new JLabel();//Construct the framepublic Frame1() {enableEvents(AWTEvent.WINDOW_EVENT_MASK);try {jbInit();}catch(Exception e) {e.printStackTrace();}}//Component initializationprivate void jbInit() throws Exception {//setIconImage(Toolkit.getDefaultToolkit().createImage(Frame1.class.getResource("[Your Icon]")));contentPane = (JPanel) this.getContentPane();box1 = Box.createVerticalBox();jTextField1.setText("192.168.101.2");contentPane.setLayout(paneLayout1);this.setSize(new Dimension(487, 462));this.setTitle("文件传输系统");jTextField2.setText("anonymous");jTextField3.setText("a");jCheckbox1.setText("使用匿名");jCheckbox1.setSelected(true);jPanel1.setLayout(xYLayout1);jLabel1.setText("服务器地址:");jLabel2.setText("用户名:");jLabel3.setText("密码:");jTextField4.setText("21");jLabel4.setText("端口号:");jPanel2.setLayout(borderLayout1);jPanel3.setLayout(xYLayout2);jPanel4.setDebugGraphicsOptions(0);jPanel4.setMinimumSize(new Dimension(160, 18));jPanel4.setPreferredSize(new Dimension(160, 18));jPanel4.setLayout(borderLayout2);jButton3.setText("文件上载");jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) {jButton3_actionPerformed(e);}});jButton4.setText("文件下载");jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) {jButton4_actionPerformed(e);}});box1.setEnabled(true);jPanel3.setDebugGraphicsOptions(0);jPanel3.setMinimumSize(new Dimension(400, 240));jPanel3.setPreferredSize(new Dimension(400, 240));jTree2.setToggleClickCount(2);jButton5.setText("选择目录");jButton5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) {jButton5_actionPerformed(e);}});statusLabel.setText("没有连接ftp服务器");list1.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(MouseEvent e) {list1_mouseClicked(e);}});jTextArea1.setText(" ");jButton1.setText("连接到服务器");jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) {jButton1_actionPerformed(e);}});jButton2.setText("断开服务器连接");jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) {jButton2_actionPerformed(e);}});list1.setMultipleMode(true);jLabel5.setText("^^FTP服务器目录列表^^");jLabel6.setText("^^本地硬盘目录列表^^");jPanel1.add(jTextField1, new XYConstraints(81, 11, 297, -1)); jPanel1.add(jLabel1, new XYConstraints(21, 11, -1, -1));jPanel1.add(statusLabel, new XYConstraints(-2, 370, 484, 29)); jPanel1.add(jButton2, new XYConstraints(34, 304, 122, -1));jPanel1.add(jButton1, new XYConstraints(34, 268, 106, 23));jPanel1.add(jLabel4, new XYConstraints(22, 50, -1, -1));jPanel1.add(jTextField4, new XYConstraints(82, 49, 88, -1));jPanel1.add(jCheckbox1, new XYConstraints(22, 84, -1, -1));jPanel1.add(jTextField2, new XYConstraints(80, 124, 86, -1));jPanel1.add(jLabel2, new XYConstraints(20, 124, 58, 21));jPanel1.add(jTextField3, new XYConstraints(80, 165, 87, -1));jPanel1.add(jLabel3, new XYConstraints(20, 166, -1, -1));jPanel2.add(box1, BorderLayout.CENTER);jPanel3.add(jScrollPane2, new XYConstraints(295, 6, 173, 280)); jPanel3.add(jScrollPane1, new XYConstraints(7, 6, 194, 281));jPanel3.add(jButton4, new XYConstraints(205, 93, 84, 19));jPanel3.add(jButton3, new XYConstraints(205, 53, 86, 19));jPanel3.add(jButton5, new XYConstraints(205, 136, 85, 19)); jPanel3.add(jLabel5, new XYConstraints(16, 293, 144, 22)); jPanel3.add(jLabel6, new XYConstraints(314, 293, 144, 22)); jScrollPane1.getViewport().add(list1, null);jScrollPane2.getViewport().add(jTree2, null);box1.add(jPanel3, null);box1.add(jPanel4, null);jPanel4.add(jScrollPane3, BorderLayout.CENTER);jScrollPane3.getViewport().add(jTextArea1, null);myInit();jTabbedPane1.add(jPanel2, "文件处理");jTabbedPane1.add(jPanel1, "连接FTP服务器");contentPane.add(jTabbedPane1, new PaneConstraints("jTabbedPane1", "jTabbedPane1", PaneConstraints.ROOT, 0.5f));}private void myInit() {File rootfile= new File("c:\\");//得到根目录文件if(rootfile.isFile()) rootfile=rootfile.getParentFile();//如果得到的不是目录,则使用他的目录DefaultMutableTreeNode rootTree2 =new DefaultMutableTreeNode(rootfile.getPath());setTree(rootfile.getPath(),rootTree2);//遍历目录树model2.setRoot(rootTree2);//设置模型的根节点model2.reload();//重新构造树视图if(ftp!=null) {ReloadList();jTextArea1.append(ftp.welcomeMsg);}}//---------------------------------------------------------------------------// 浏览程序:private void ReloadList()// 作用:清空目录列表,调用List()方法获取文件列表。
java版ftp简易客户端(可以获取文件的名称及文件大小)
try {
18.
//连接指定的ftp服务器,需要设定好服务器的ip地址
19.
client.connect("192.168.20.21");
20.
21.
//登录的用户名和密码
22.
client.login("admin", "admin");
23.
System.out.println("login ftp ok ...");
24.
25.
//查看当前目录
26.
String workingDirectory = client.printWorkingDirectory();
27.
System.out.println(workingDirectory);
28.
29.
//获取指定目录下的文件及目录
30.
FTPListParseEngine engine = client.initiateListParsing("/dir1/zenoss-2.4.1-x86.vmware.zip");
9.
10. public class FTPClientTool {
11.
12. /**
13. * @param args
14. */
15. public static void main(String[] args) {
16.
FTPClient client = new FTPClient();
17.
登录后才能查看或发表评论立即登录或者逛逛博客园首页
java版 ftp简易客户端(可以获取文件的名称及文件大小)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
os = new FileOutputStream(outfile);
byte[] bytes = new byte[1024];
try
{
ftpClient= new FtpClient();
ftpClient.openServer(server,port);
ftpClient.login(userName, userPassword);
ftpClient.binary();
*/
public boolean deleteDirectory(String ftpDirectory)
{
if(!open())
return false;
ftpClient.sendServer("XRMD "+ftpDirectory+"\r\n");
* @throws Exception
*/
public long download(String ftpDirectoryAndFileName,String localDirectoryAndFileName)throws Exception
{
long result = 0;
try {
ftpClient.cd(dir);
} catch (IOException e) {
Logs.error(e.toString());
return f;
}
return true;
} Leabharlann /** * 上传文件到FTP服务器
* @param localPathAndFileName 本地文件目录和文件名
if(!open())
return false;
FileInputStream is=null;
TelnetOutputStream os=null;
try
{
char ch = ' ';
if (ftpDirectory.length() > 0)
{
List<String> list = new ArrayList<String>();
if(!open())
return list;
try
{
DataInputStream dis = new DataInputStream(List(ftpDirectory));
if (os != null)
os.close();
}
}
/**
* 从FTP服务器上下载文件并返回下载文件长度
* @param ftpDirectoryAndFileName
* @param localDirectoryAndFileName
* @return
if (index > 0) {
String dir = dirall.substring(0, index);
directory = directory + "/" + dir;
ftpClient.sendServer("XMKD " + directory + "\r\n");
erPassword=userPassword;
}
/**
* 链接到服务器
* @return
*/
public boolean open()
{
if(ftpClient!=null&&ftpClient.serverIsOpen())
return true;
return true;
}
catch(Exception e)
{
e.printStackTrace();
return false;
}
finally
{
if (is != null)
is.close();
if (backslashIndex != -1 && (index == -1 || index > backslashIndex))
index = backslashIndex;
String directory = "";
while (index != -1) {
ftpClient.readServerResponse();
os = ftpClient.put(ftpDirectory + "/"
+ ftpFileName);
File file_in = new File(localDirectoryAndFileName);
public FtpClientUtil(String server,int port,String userName,String userPassword)
{
this.server=server;
this.port=port;
erName=userName;
* @param ftpFileName 上传后的文件名
* @param ftpDirectory FTP目录如:/path1/pathb2/,如果目录不存在回自动创建目录
* @throws Exception
*/
public boolean upload(String localDirectoryAndFileName,String ftpFileName,String ftpDirectory)throws Exception {
return true;
}
catch(Exception e)
{
e.printStackTrace();
ftpClient=null;
return false;
}
}
public boolean cd(String dir){
boolean f = false;
index = slashIndex;
if (backslashIndex != -1 && (index == -1 || index > backslashIndex))
index = backslashIndex;
}
ftpClient.sendServer("XMKD " + ftpDirectory + "\r\n");
ftpClient.readServerResponse();
}
dirall = dirall.substring(index + 1);
slashIndex = dirall.indexOf(47);
backslashIndex = dirall.indexOf(92);
ch = ftpDirectory.charAt(ftpDirectory.length() - 1);
for (; ch == '/' || ch == '\\'; ch = ftpDirectory.charAt(ftpDirectory.length() - 1))
ftpDirectory = ftpDirectory.substring(0, ftpDirectory.length() - 1);
is = new FileInputStream(file_in);
byte bytes[] = new byte[1024];
int i;
while ((i = is.read(bytes)) != -1)
os.write(bytes, 0, i);
//清理垃圾
String filename = "";
while((filename=dis.readLine())!=null)
{
list.add(filename);
}
} catch (Exception e)
return true;
}
/**
* 关闭链接
*/
public void close()
{
try
{
if(ftpClient!=null&&ftpClient.serverIsOpen())
ftpClient.closeServer();
if(!open())
return result;
TelnetInputStream is = null;
FileOutputStream os = null;
try
{
is = ftpClient.get(ftpDirectoryAndFileName);
int c;
while ((c = is.read(bytes)) != -1)
{
os.write(bytes, 0, c);
result = result + c;
}
{
e.printStackTrace();
}
return list;
}
/**
* 删除FTP上的文件
* @param ftpDirAndFileName
*/
public boolean deleteFile(String ftpDirAndFileName)