从ftp读取文件,实测有效

从ftp读取文件

依赖:`

<dependency>
	<groupId>commons-net</groupId>
	<artifactId>commons-net</artifactId>
	<version>3.3</version>
</dependency>

代码:```

private void downFormFtp(String name) throws Exception
    {
        FTPClient ftpClient=new FTPClient();  //import org.apache.commons.net.ftp.FTPClient;
        ftpClient.connect("192.168.153.2", 21); // 连接ftp,端口默认21
        ftpClient.login("zhangsan", "123456"); // 账号密码登陆ftp
        if (FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) //是否连接成功,成功true,失败false
        {
                ftpClient.changeWorkingDirectory("/"+File); //找到指定目录
                FTPFile[] ftpFiles = ftpClient.listFiles();
                for (FTPFile ftpFile : ftpFiles) {
                        InputStream inputStream=ftpClient.retrieveFileStream(name);//根据指定名称获取指定文件
                        if (inputStream==null){
                            continue;
                        }
                        BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream,"GBK"));
                        String line=null;
                        StringBuilder stringBuilder=new StringBuilder(150);
                        while ((line = bufferedReader.readLine()) != null)
                        {
                            stringBuilder.append(line + "\n");
                        }
                        String context=stringBuilder.toString();
                        JSONArray objects = JSONArray.parseArray(context);
                        Map<String,Object> map = (Map<String,Object>) objects.get(0);
                        // 注意,最后两句必不可少,第一句是关闭流,不用多说,没有第二句的话,循环读取会出现只能读第一个,后面的流都是null的情况
                        inputStream.close();
                        ftpClient.completePendingCommand();
                    }
           }
    }

发布了6 篇原创文章 · 获赞 1 · 访问量 74

猜你喜欢

转载自blog.csdn.net/qq_42663973/article/details/103106169