java IO流的一些零碎知识点

1,字符输入流要想以追加模式写入数据,有两种方法,一种是把FileWriter的第二个参数写成true,另外一种就是使用append方法进行追加,这两种方法的区别就是append方法可以动态的选择追加内容,但是改变参数这个方法只能保持一种输入值不变。

而字节输入流OutputStream只有一种追加方法,就是把FileOutputStream的第二个参数写成true。

还有一点就是字符输入流可以直接把要输入的字符串进行直接输入,不需要中间的换种数组。如:writer.write(str);

字符流和字节流还有一点区别就是:字节流是对文件本身的直接操作,不需要通过缓冲区,而字符流则要通过缓冲流来操作文件。意思就是说使用字节流时就算没有执行close方法关闭字节流的操作,还是可以向文件输出内容,但是在字符流中,若不执行close方法,就无法性文件写内容。可以写个Demo尝试一下。字符流之所以必须调用close是因为,字符流在执行过程中引入了缓冲区机制,即写操作先将内容放入缓冲区,若写操作完毕后,不将缓冲区内容刷新到文件的话,文件将为空。(我对这里有一个疑问:如果待写入的数据比较大,超过了缓冲区的限制,那会不会报错?)

字节输入流:


import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

public class TestDemo{
	public static void main(String args[]) {
		File file=new File("E:"+File.separator+"testdemo1","file.txt");
		String str="何时了,往事知多少,小楼昨夜又东风";
		OutputStream output=null;
		byte b[]=str.getBytes();
		try {
			output=new FileOutputStream(file,true);
			output.write(b);
			output.close();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
}

字符输入流:


import java.io.File;
import java.io.FileReader;
import java.io.Writer;
import java.io.FileWriter;
import java.io.Reader;

public class TestDemo{
	public static void main(String args[]) {
		File file=new File("E:"+File.separator+"testdemo1","file.txt");
		String str="床前明月光,疑是地上霜";
		Reader reader=null;
		Writer writer=null;
		int temp=0;
		int len=0;
		char c[]=new char[(int)file.length()];
		try {
			writer=new FileWriter(file,true);
			writer.write(str);
			//writer.append("中华人民共和国");
			reader=new FileReader(file);
			while((temp=reader.read())!=-1) {
				c[len]=(char)temp;
				len++;
			}
			writer.close();
			reader.close();
		}catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println(c);
	}
}

猜你喜欢

转载自blog.csdn.net/yaoyaoyao_123/article/details/84890832
今日推荐