怎么解决这个问题?
时间: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客户端程序中摘录下来的。)
在一个文本文件中,一行中可能形如
字符串 + 回车符 + 回车符 + 换行符 (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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28