字节流和字符流在整个IO包中,流的操作分为两种:·字节流|·字节输出流OutputStream、字节输入流InputStream·字符流:一个字符=两个字节|·字节输出流Writer,字节输入流ReaderIO操作的基本步骤:1、使用File找到一个文件2、使用字节流或字符流的子类为OutputStream、InputStream、Writer、Reader进行实例化操作3、进行读写的操作4、关闭:close(),在流的操作中最终必修进行关闭。字节输出流:OutputStream在Javaio中OutputStream是字节输出流的最大父类。此类是一个抽象类,所以使用时修要依靠子类进行实例化操作。如果此时要完成文件的输出操作,则使用FileOutputStream为OutputStream进行实例化操作:OutputStreamout=newFileOutputStream(Filef)OutputStream提供了一下的写入数据的方法:·写入全部字节数组:pubicvoidwriter(byte[]b)throwsIOException·写入部分字节数组:publicvoidwriter(byte[]b,intoff,intlen)throwsIOException·写入一个数据:publicabstractvoidwriter(intb)throwsIOExceptionimportjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.OutputStream;publicclassOutputStreamdemo{publicstaticvoidmain(String[]args)throwsIOException{Filefile=newFile(d:+File.separator+demo.txt);OutputStreamout=newFileOutputStream(file);Strings=Helloworld;byte[]b=s.getBytes();//将字符串转换为byte数组out.write(b);//输出Helloworldout.write(b,0,5);//输出Helloout.close();}}以上操作是将全部字节数组内容输出,当然,也可以同过循环一个个的输出:importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.OutputStream;publicclassCopyOfOutputStreamdemo2{publicstaticvoidmain(String[]args)throwsIOException{Filefile=newFile(d:+File.separator+demo.txt);OutputStreamout=newFileOutputStream(file);Strings=Helloworld;byte[]b=s.getBytes();//将字符串转换为byte数组for(inti=0;ib.length;i++){out.write(b[i]);//将数组中的字符一个个的输出}out.close();}}如果要向文件中追加内容则需要调用FileOutputStream类的另外一个构造方法:pubicOutputStream(Filefile,booleamappend)throwsFileNotFoundException,如果将append的内容设置为true,则表示增加内容。importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.OutputStream;publicclassCopyOfOutputStreamdemo2{publicstaticvoidmain(String[]args)throwsIOException{Filefile=newFile(d:+File.separator+demo.txt);OutputStreamout=newFileOutputStream(file,true);Strings=Helloworld\r\n;//\r\n表示换行byte[]b=s.getBytes();//将字符串转换为byte数组for(inti=0;ib.length;i++){out.write(b[i]);//输出Helloworld}out.close();}}此方法更常用字节输入流:InputStream使用InputStream可以读取输入流的内容此类也是一个抽象类,同样需要使用子类对象进行实例化,如果现在是文件操作则使用FileInputStream,·FileInputStream的构造方法:publicFileInputStream(Filefile)throwsFileNotFoundException·将内容读入字节数组中:pubicintread(byte[]b)throwsIOException·每次读入一个数据:publicabstractvoidread(intb)throwsIOException范例:将文件中的内容读取进来importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;publicclassInputStreamdemo{publicstaticvoidmain(String[]args)throwsIOException{Filefile=newFile(d:+File.separator+demo.txt);InputStreaminput=newFileInputStream(file);byte[]b=newbyte[1024];intlen=input.read(b);System.out.println(newString(b));System.out.println(newString(b,0,len));}}以上是一种比较常见的读取形式,但是以上的代码有一个缺点,会受到开辟空间大小的限制,如果想动态的开辟数组空间,则可以根据文件的大小来决定。采用read()方法一个个的读取数据。importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;publicclassInputStreamdemo2{publicstaticvoidmain(String[]args)throwsIOException{Filefile=newFile(d:+File.separator+demo.txt);InputStreaminput=newFileInputStream(file);byte[]b=newbyte[(int)file.length()];for(inti=0;ib.length;i++){b[i]=(byte)input.read();}System.out.println(newString(b));}}字符输出流:WriterWriter类是IO包中操作字符的最大父类,主要功能是完成字符流的输出。Writer类同OutputStream类一样,都属于抽象类,如果要进行文件的保存,则使用FileWriter类进行实例化。写入操作:publicvoidwrite(Stringstr)throwsIOException,不再用将String转换为byteimportjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.FileWriter;importjava.io.IOException;importjava.io.OutputStream;importjava.io.Writer;publicclassWriterdemo{publicstaticvoidmain(String[]args)throwsIOException{Filefile=newFile(d:+File.separator+Writerdemo.txt);Writerout=newFileWriter(file);Strings=Hello\r\nworld\r\n;out.write(s);//输出Helloworldout.write(s,0,5);//输出Helloout.close();}}追加内容:importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.FileWriter;importjava.io.IOException;importjava.io.OutputStream;importjava.io.Writer;publicclassappendWriterdemo{publicstaticvoidmain(String[]args)throwsIOException{Filefile=newFile(d:+File.separator+Writerdemo.txt);Writerout=newFileWriter(file,true);Strings=Hello\r\nworld\r\n;out.write(s);//输出Helloworldout.write(s,0,5);//输出Helloout.close();}}字符输入流:ReaderReader与OutputStream的不同的是使用的是char数组Reader是一个抽象类,进行文件读取要使用FileReader读取的方法:·读取一组字符:publicintread(char[]cbuf)throwsIOExceptionimportjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.IOException;importjava.io.Reader;publicclassReaderdemo{publicstaticvoidmain(String[]args)throwsIOException{Filefile=newFile(d:+File.separator+demo.txt);Readerinput=newFileReader(file);char[]b=newchar[1024];intlen=input.read(b);System.