用java如何输出一个每行固定为100个字符的文本文件?

tomyjohn 2010-04-22 02:45:45
类似于从一个文本文件中读出如下字符:
用java如何输出一个每行固定为10个字符的文本文件
存到另一个文本文件时变成:
用java如何
输出一个每
行固定为10
个字符的文
本文件
(中文字符)
...全文
1143 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
平淡面对 2010-04-22
  • 打赏
  • 举报
回复
用正则表达式也可以。
如下。


String s4 = "4月19日,在足足吊了市场3个月胃口之后,联想的移动互联网战略终于在中国揭开面纱。\n\n  “联想下决心和iPhone背水一战,我们将不顾一切地投入”、 “在关键时候你们(指合作伙伴)对我们的支持就是生死之交。我们要一起战胜那个巨人,它就是iPhone”、“我们要做的,就是像小孩一样,不断地跪地,接受大地赐予的力量”。老夫聊发少年狂,66岁的IT教父柳传志如同敢死队出征前的热血誓言,让业界为之动容。这是柳传志从业以来第二次如此充满豪情和感性。上一次,是2004年12月联想宣布收购IBM PC部门。\n\n  产品设计和功能完胜苹果\n\n  早在3个月前,联想就在美国拉斯维加斯的C E S展上宣布了自己的移动互联网战略,几十款移动互联终端也亮丽登场,其中乐Phone手机、Skylight智能本、ideapadU 160超轻薄上网本更是被称为“移动三剑客”,在CES展上获奖无数。美国主流媒体感慨:来自中国的联想要向巨人苹果发起挑战。";

String outString = s4.replaceAll("([\u4e00-\u9fa5\u3000-\u303F\uFF00-\uFFEF])", "$1\f");
outString = outString.replaceAll("([^\\r\\n\\f][^\\r\\n]{7}([^\\r\\n\\f]\\f|[^\\f]{2})?(?![\\r\\n]))", "$1\r\n");
outString = outString.replaceAll("\\f", "");
System.out.println(outString);

crazylaa 2010-04-22
  • 打赏
  • 举报
回复
每行放20个字节,在看最后一个字节来决定这是个中文还是个英文/数字
tomyjohn 2010-04-22
  • 打赏
  • 举报
回复
谢谢,还有一个问题,就是如果是中文字符,和英文字符混在一起时,这样处理会让一些文字不能正常显示吗?
StringBuffer清空要用sb=sb.delete(0,sb.length());
iori200908 2010-04-22
  • 打赏
  • 举报
回复
是每行10个字节(byte)吧?

//str是从文件中读取出来的一行
String str = "f中大幅度爱的色放";
int length = str.length();
StringBuffer sb = new StringBuffer();
FileWriter fw = null;
try {
fw = new FileWriter("./test.txt"););

for (int i = 0; i < length; i++) {
sb.append(str.charAt(i));
if (sb.toString().getBytes().length > 10) {
sb.append("\r\n");
fw.write(sb.toString());
sb.clear();
} else if (i == length - 1) {
fw.write(sb.toString());
}
}
} catch (Exception e){
//do something
}finally {
try {
fw.close();
} catch (Exception e) {
//do something
}
}

不好意思,在网吧没有调试工具,你测试下看看。主要是String.getBytes().length能计算出字节数。
zfq642773391 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tomyjohn 的回复:]
那如果是一个未知文本文件,不知道大小?
[/Quote]
调用方法得到他的大小嘛
awusoft 2010-04-22
  • 打赏
  • 举报
回复
如果说是不确定的话,那就比较麻烦了吧,都不知道什么时候才满100个字符.
那就记录当前的行的已输出的字符数吧.每先判断一下将要输出的加上已经输出的够不够100,不够的话就直接输出,够的话就要截取一下了.
tomyjohn 2010-04-22
  • 打赏
  • 举报
回复
那如果是一个未知文本文件,不知道大小?
awusoft 2010-04-22
  • 打赏
  • 举报
回复
如果你确定是那么多的话,你可以那边读10次,这边写一次啊.
int count=0;
boolean f = true;
String temp=null;
StringBuffer sb =null;
while(f)
{
sb = new StringBuffer("");
for(int i=0;i<10 && (temp=read.readLine())!=null ;i++)
{
sb.append(temp.replace("\r\n",""));
}
if(temp!=null || !"".equals(sb.toString()))
{
sb.append("\r\n");
write.write(sb.toString());
}else
{
f =false;
}

}
LightningMan 2010-04-22
  • 打赏
  • 举报
回复
你看看这么行不行,定义一个数组,然后把你要输出的东西存里面,然后判断i的值,i能被5整除时,打个换行标识,建议试试!呵呵,看看好不好使!

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧