你的"/n"错了,应该是"\n",但是这样写的用Windows的记事本打开看,会发现回车的地方是个黑色的方块,但是用类似UltraEdit的工具打开,发现换了行。首先回车,换行对应的十六进制的码为,0D,0A,换算成十进制为13,10。如果你要在文本的后面实现回车,换行,就只用写入这两个的十进制数字就行了。下面是我的测试代码。import java.io.*;
/**
 * @author tujianling
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class CWrite { public static void main(String[] args) throws Exception {
File file = new File("t.txt");
                  //文件不存在,就创建
if(!file.exists())
file.createNewFile();

String strThing = "aaabbb";    //这个是你要写入的文本
FileWriter fw  = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(strThing);  //写入第一行数据
bw.write(13);       //写入回车的码
bw.write(10);       //写入换行的码
bw.write(strThing);    //写入第二行数据,可以发现换了行
bw.flush();
fw.flush();
bw.close();
fw.close();
}
}

解决方案 »

  1.   

    我的意见是检测字符串里的回车和换行府,把其分割开写入。
    给个简单的程序
    import java.io.*;
    public class Untitled4 {
      File file = new File("D://1.txt");
      int flag;
      public Untitled4() {
        try{
          BufferedWriter bw = new BufferedWriter(new FileWriter(file));
          String str="iiiiiiiiiiii/reeeeeeeeeeeeeeeeeeeee/rgggggggggggg";
          while((flag = str.indexOf("/r"))!=-1){
            String strtem = str.substring(0,flag);
            bw.write(strtem);
            bw.newLine();
            str = str.substring(flag+2);
            
          }      
          bw.close();
        }catch(Exception e)
        {
          e.printStackTrace();
        }
      }
      public static void main(String[] args) {
        Untitled4 untitled41 = new Untitled4();
      }}
      

  2.   

    为了跨平台,就尽量用BufferedWriter类的newLine();
    你的是FileWriter,
    是字符流,
    故要用BufferWriter类去包装它。
    BufferedWriter bw = new BufferedWriter(new FileWriter("hello.dat"));
    在I/0这儿,经常要用各种包装流去实现某些效果。还有转换流,如OutputStreamWriter。其实这很好记的,
    有Stream的类名就是字节流,
    有Writer/Reader的就是字符流,
    两个皆有的就是转换流!java.io.*包中的类效率有点低,
    特别是在网络应用中有阻塞,
    故JSR现在推出了java.nio.*。
    你可以看一下!