当前位置 主页 > 站长资源大全 > IIS7 FTP大全 >

    ftp上传文件时数据不完全该怎么解决?

    栏目:IIS7 FTP大全 时间:2021-08-14 13:54

           IIS7批量FTP管理功能说明:
           1、可批量导入,导出FTP信息
           2、其他ftp工具有的功能,我们也有
           3、特色功能:可以定时上传下载
           4、数据信息列表化、一眼就能知道那个是那个
           5、批量连接标签页式切换方便快捷
           6、7大连接模式更多好的兼容
           7、内嵌编辑器有效解决普通txt记事本乱码
           8、锁屏功能当程序有规定时间内没人操作,则自动锁程序。输入密码才可以正常操作
            本产品适用于:懒得记录FTP信息和有批量定时备份,上传下载的运维或站长。
           下载地址:http://ftp.iis7.com/
           图片:
         
      相信大家在使用ftp上传文件的时候,都是先创建了文件,然后再上传。如果出现程序读取文件不完全,出现只读取一部分不完成的数据时,这类的问题该如何解决呢?
      第一种方法:在上传文件之前,创建一个临时文件名称保存在客户端,在上传完毕再重命名。而重命名是修改注册表所以不会产生过程中数据不一致的问题。
      第二种方法:把文件打开,并在文件尾追加一个标识内容。然后关掉文件,再重新打开文件,确定多写入的内容是否成功,如果不成功,说明文件还在被占用,如果成功了就说明ftp上传结束了。
      最后说明一下,在使用ftp客户端上传文件的时候,无法在文件上追加更多的内容,而且java代码不报错,才会有第二种方法。
      java代码如下:
      package com.ehl.tvc.util;
      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.OutputStream;
      import java.util.List;
      import org.apache.commons.io.IOUtils;
      public class FileUtil {
      private static String endTag = "end";
      /**
      * 判断文件是否写入内容完毕,如果完毕返回true,反之false
      * @param f
      * @return
      */
      public static boolean checkIniTransfered(File f){
      OutputStream output = null;
      try {
      output = new FileOutputStream(f, true);
      output.write((endTag+"\n").getBytes());
      output.flush();
      output.close();
      } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      }finally {
      IOUtils.closeQuietly(output);
      }
      InputStream input =null;
      try {
      input = new FileInputStream(f);
      List<String> list =  IOUtils.readLines(input);
      if(list.size()>0){
      String endstr =list.get(list.size()-1);
      if(endTag.equals(endstr)){
      return true;
      }
      }
      } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      }finally {
      IOUtils.closeQuietly(input);
      }
      return false;
      }
      }