为什么这三段代码写出来的文件没有区别,求大神解答

File f=new File("d:/text1.txt");
FileOutputStream outfile=new FileOutputStream(f,true);
try
{
for(int i='A';i<='Z';i++)
outfile.write(i);
outfile.write('\t');
byte b[]="java程序设计".getBytes();
outfile.write(b);
System.out.print("文件内容写入完毕");
}
catch(IOException e)
{
System.out.println(e.getMessage());
}
finally
{outfile.close();}//关闭输入流

    File f=new File("d:/text2.txt");
    FileOutputStream outfile=new FileOutputStream(f,true);
    try
    {
        for(int i='A';i<='Z';i++)
            outfile.write(i);
        outfile.write('\t');
        byte b[]="java程序设计".getBytes();
        outfile.write(b);
        outfile.write(\r);
        System.out.print("文件内容写入完毕");
    }
    catch(IOException e)
    {
        System.out.println(e.getMessage());
    }
    finally
    {outfile.close();}//关闭输入流



    File f=new File("d:/text3.txt");
    FileOutputStream outfile=new FileOutputStream(f,true);
    try
    {
        for(int i='A';i<='Z';i++)
            outfile.write(i);
        outfile.write('\t');
        byte b[]="java程序设计".getBytes();
        outfile.write(b);
        outfile.write('\n');
        System.out.print("文件内容写入完毕");
    }
    catch(IOException e)
    {
        System.out.println(e.getMessage());
    }
    finally
    {outfile.close();}//关闭输入流

有区别,一个是\r一个是\n
只是在记事本打开,它们都是不可见字符,看起来没有区别而已。

在windows中\r\n才是换行,linux/unix中\n就是换行了。

windows的记事本要严格的\r\n才换行,只有\r或\n都无效果,你可以用其他的文本编辑器看看。

记事本看起来一样不代表真正的一样,最好的方式是你再把他们读出来放到byte数组里,看看都有些什么。

\r只是一个回车符,\n表示换行
'\n' 10 换行(newline)
'\r' 13 回车(return)