我上写成这个样子的:
      FileOutputStream fileoutputstream = new FileOutputStream(path);
      BufferedWriter bufferedwriter = new BufferedWriter(new OutputStreamWriter(fileoutputstream));
      bufferedwriter.write("\n");
      bufferedwriter.write("11");
      bufferedwriter.write("\r");
      bufferedwriter.write("22");
      bufferedwriter.flush();

解决方案 »

  1.   

    只有PrintWriter,在DOS/Windows平台上,才会把“\n”替换成硬换行,即一个换行加一个回车。
      

  2.   

    其他的Writer不是针对文本文件的,因此就不应该有这种替换。
      

  3.   

    错啊.那为什么我用word打开就换行了呢? 另外,PrintWriter 是用于输出到控制台上的。我是要写进.txt的文本里了
      

  4.   

    谁说的?
    PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("C:\\a.txt")));
    写到文件里头。
      

  5.   

    什么呀,word中“手工换行符”和“段落标记”是不一样的,你那种在WORD里头查找“^p”根本找不到,全是“手工换行符”。
    再说,Word打开又能怎样?UltraEdit也能打开呢。关键问题是并不是所有的Windows平台上的编辑器都能正常显示软换行啊。
    能够正常显示的只是因为这些软件本身对非Dos平台上的换行符(单单一个"\n")也进行了换行显示。
      

  6.   

    那这么说我必须用PrintWriter 了?
    另外,为什么word 可以换行?
      

  7.   

    主要原因是windows平台和unix定义的换行的字符不统一,在unix系统上"\n"就足够了。
    加一个
    public static final String CRLF="\r\n";然后把你的程序改掉
          FileOutputStream fileoutputstream = new FileOutputStream(path);
          BufferedWriter bufferedwriter = new BufferedWriter(new OutputStreamWriter(fileoutputstream));
          bufferedwriter.write(CRLF);
          bufferedwriter.write("11");
          bufferedwriter.write(CRLF);
          bufferedwriter.write("22");
          bufferedwriter.flush();
      

  8.   

    uliyas(苦咖啡) 真强,是\r\n 而不是  \n\r
    谢谢大家