关于java的一些i/o操作请高手详细说下下面几句话的用途和使用方法

FileOutputStream fos=new FileOutputStream("test.txt",true);
BufferedOutputStream bos=new BufferedOutputStream(fos);
OutputStreamWriter osr=new OutputStreamWriter(bos,"gbk");
PrintWriter pw=new PrintWriter(osr);

第一句打开文件,在上面获得数据流
第二句在数据流上获得缓冲区stream
第三句获得文本输出句柄,支持gbk编码集
第四句获得打印writer,支持行打印,和文字输出