Java io流复制的死循环问题

代码如图
这是个简单的自我复制文本的程序
但在源文件超过8k后就开始死循环了,不断自动复制一直到磁盘溢出
我翻了下源码没找到这8k限制是出在哪的
有大个子知道原因吗?

img

读写不要操作同一个文件。

import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("xx.txt");
        FileWriter fw = new FileWriter(new File("xx2.txt"),true);
        FileReader fr= new  FileReader(file);
        char[] buf = new char[50];
        int Len;
        while((Len= fr.read(buf))!=-1){
            fw.write(buf,0,Len);
        }
        fw.close();
        fr.close();
        System.out.println("写入成功");
    }
}

img

1、一般文件有读写锁控制,读的时候不允许编辑,比如:文件使用word打开,这时给该文件重命名时就会弹出:“操作无法完成,因为文件已经在XX打开。请关闭该文件并重试” 的字样,就是有读写锁控制。
2、题主的问题也是这个道理类似。
3、相关IO经典总结:IO流缓冲字节流缓冲字符流等流经典代码示例