package Demo1; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; public class pluto{ public static void main(String[] args) throws Exception{ File f=new File("d:"+File.separator+"test.txt"); OutputStream out=null; out=new FileOutputStream(f); String str="hellojava"; byte b[]=str.getBytes(); for(int i=0;i<b.length;i++) { if(i%2==0) { out.write((byte) (b[i]-32)); } else { out.write(b[i]); } } out.close(); } }
实验结果:
实验总结:
1、字节流
所有的读操作都继承自一个公共超类java.io.InputStream类。
所有的写操作都继承自一个公共超类java.io.OutputStream类。
InputStream和OutputStream都是抽象类。
中文处理使用字符流。
字节流与字符流区别:
首先必须要明确一点,通过任何终端(网络、文件)读取或者输出的数据都一定是字节,但是字符是经过内存处理后的数据。
字符输入:字节(磁盘)–> 自动转换为 –>字符(内存);
字符输出:字符(内存)–> 自动转换为–>字节(磁盘);
在利用字符流输出的时候,所有的内容实际上都只是输出到了缓冲区中(内存)。在使用close()方法关闭的时候会将我们缓冲区的数据进行输出,如果没有关闭,那么就将无法进行输出,此时可以利用flush()方法进行强制的输出。
字符使用到了缓冲区,而字节流没有使用到缓冲区。
如果处理中文使用字符流,其他的任何数据都使用字节流。