类似于从一个文本文件中读出如下字符:
用java如何输出一个每行固定为10个字符的文本文件
存到另一个文本文件时变成:
用java如何
输出一个每
行固定为10
个字符的文
本文件
(中文字符)

解决方案 »

  1.   

    如果你确定是那么多的话,你可以那边读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;
      }}
      

  2.   

    是每行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能计算出字节数。
      

  3.   

    谢谢,还有一个问题,就是如果是中文字符,和英文字符混在一起时,这样处理会让一些文字不能正常显示吗?
    StringBuffer清空要用sb=sb.delete(0,sb.length());
      

  4.   

    用正则表达式也可以。
    如下。
    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);