+ -
当前位置:首页 → 问答吧 → 怎么解决这个问题?

怎么解决这个问题?

时间:2010-08-06

来源:互联网

本帖最后由 kwaz 于 2010-08-06 18:11 编辑

在一个文本文件中,一行中可能形如

字符串 + 回车符 + 回车符 + 换行符 (vi打开该行时,可以看到一个"^M",然后后面跟的当然是回车+换行)

现在在读写文件的时,碰到了一个大问题,无法解决:

第1种方法:
               BufferedReader buffer = new BufferedReader(new InputStreamReader(gftp.get(filename)));
               FileWriter getFile = new FileWriter(_localpath+java.io.File.separator+filename);
               if (buffer !=  null)
               {
                    while ((ch = buffer.read()) >= 0)
                       getFile.write(ch);
                           
                    getFile.flush();
               }
               buffer.close();
               getFile.close();
这种方法为出现截断:
      即:getFile非常有可能写不完成

第2种方法:
          BufferedReader buffer = new BufferedReader(new InputStreamReader(gftp.get(filename)));
               FileWriter getFile = new FileWriter(_localpath+java.io.File.separator+filename);
               if (buffer !=  null)
               {
                         while ((line = buffer.readLine()) != null)
                         {
                               if(iflag==1)
                               {

                                      if(line.length()==0)
                                      {
                                            getFile.write(13);
                                            continue;
                                      }
                                      getFile.write(13);
                                      getFile.write(10);
                             }
                             else
                                iflag=1;
                             getFile.write(line);
                         }
                         getFile.flush();
                         getFile.close();
               }
这种方法可以保证getFile写入完成,但有另外两个缺点:
        1.第一个回车刚好在回车换行前,如果不在回车换行前,代码要做修改
        2.只针对文本文件,其他的文件呢?又该如果处理?
        3.这段代码居然要针对文件中每一行中的“回车”字符进行处理,非常不爽!

难道Java面对这样的问题没有好的办法?还是俺的水平太低?
哪位大大可以教我个普遍适用的代码么?拜托了!

另外,RandomAccessFile的也不能满足要求,那玩意简直比蜗牛还慢!

(注:这些代码是从我在写的ftp客户端程序中摘录下来的。)

作者: kwaz   发布时间: 2010-08-06

在线等待高手出现

作者: kwaz   发布时间: 2010-08-06