Java将数据写入csv文件使用FTP上传

  1.  前段时间遇到一个项目,需要些一个备份方案,将数据写入csv文件使用FTP上传,通过看一些资料学习完成,下列提供简单的方案供参考。
  2. 逻辑:先创建文件,然后将内容写入文件,最后使用FTP上传。直接上代码:
  3. //1.先创建文件
        public static boolean createFile(String path,String fileName,String fileContent,String companyId) throws IOException{
            Boolean boo=false;
            String tempFileName=path+fileName;
            File file=new File(tempFileName);
            //判断文件路径是否存在,不存在创建文件夹
            if(!file.getParentFile().exists()){
                file.getParentFile().mkdirs();
            }
            
            //判断如果文件不存在,则新建,存在 继续往里面写
            if(!file.exists()){
                file.createNewFile();
                boo=writeFileContent(tempFileName, fileContent,fileName,companyId);
            }else{
                boo=writeFileContent(tempFileName, fileContent,fileName,companyId);
            }
            return boo;
          
        }
        //2. 将内容写入文件
        public static boolean writeFileContent(String fileNamePath,String writeContent,String fileName,String companyId) throws IOException{
            boolean boo=false;
            IEmsSchemeMgr iesm=new EmsSchemeMgrImpl();
            //文件内容换行
            String fileC=writeContent+"\r\n"; //new String(writeContent.getBytes(),"UTF-8") +"\r\n";
            String temp="";
            
            FileInputStream fis=null;
            InputStreamReader isr=null;
            BufferedReader br=null;
            FileOutputStream fos=null;
            PrintWriter pw=null;
            try{
            File file=new File(fileNamePath);
            //将文件读入输入流
            fis=new FileInputStream(file);
            isr=new InputStreamReader(fis);//,""
            br=new BufferedReader(isr);
            
            StringBuffer sb=new StringBuffer();
            //文件原有内容
            for (int i = 0; (temp=br.readLine())!=null; i++) {
                sb.append(temp);
                //换行
                sb=sb.append(System.getProperty("line.separator"));
            }
            sb.append(fileC);
            fos = new FileOutputStream(file);
            pw = new PrintWriter(fos);
            pw.write(sb.toString().toCharArray());
            pw.flush();
            boo = true;
            long len=(file.length()/1024)+1; //由于整数运算省略小数部分... 故加1
            //将数据保存在数据库 3.将写入文件的大小,路径,时间,文件名称 ,推送状态  保存在数据库  --放在 写入文件之后
            EmsReserveEntity reserve=new EmsReserveEntity();
            reserve.setFileName(fileName);
            reserve.setFileSize(String.valueOf(len));
            reserve.setCompanyId(companyId);
            iesm.updateFileSize(reserve);
            
            System.out.println("文件的大小:"+len);
            }catch(Exception e){
                e.printStackTrace();
            }finally{
            //关闭流
                if (pw != null) {
                    pw.close();
                }
                if (fos != null) {
                    fos.close();
                }
                if (br != null) {
                    br.close();
                }
                if (isr != null) {
                    isr.close();
                }
                if (fis != null) {
                    fis.close();
                }
            }
            return boo;
        }

     

  4. 使用FTP上传文件具体步骤
  5.    
    /**
        * Description: 向FTP服务器上传文件
        * @Version1.0
        * @param url FTP服务器hostname
        * @param port FTP服务器端口
        * @param username FTP登录账号
        * @param password FTP登录密码
        * @param path FTP服务器保存目录
        * @param filename 上传到FTP服务器上的文件名
        * @param input 输入流
        * @return 成功返回true,否则返回false
        */
        public static boolean uploadFile(String url,int port,String username, String password,
                String path, String filename, InputStream input) {
        boolean success = false;
        FTPClient ftp = new FTPClient();
        try {
            int reply;
            ftp.connect(url, port);//连接FTP服务器
            //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
            ftp.login(username, password);//登录
            reply = ftp.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply)) {
                ftp.disconnect();
                return success;
            }
            ftp.changeWorkingDirectory(path);
            ftp.storeFile(filename, input);
            
            input.close();
            ftp.logout();
            success = true;
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
            if (ftp.isConnected()) {
                try {
                    ftp.disconnect();
                    } catch (IOException ioe) {
                }
            }
            }
            return success;
        }

     

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值