java.io包中定义了多个流类型来实现输入输出功能。可分为输入 输出流 、 字节流 字符流 、 接电流 处理流
所有流类型位于java.io包内 都分别继承了以下四种抽象流类型。
InputStream OutputStream Reader Writer
1、节点流:可以从一个特定的数据源(节点)读写数据。即可直接读写、获取。
处理流:不止一个管道。
2、带有Stream关键字都为字节流:InputStream OutputStream
字符流: Reader Writer
3、继承自InputStream的流都是用于向程序中输入数据的。单位为字节。
方法: int read() 读取一个字节 以整数的形式返回
int read(byte[] buffer) 读取一系列的字节并存储到一个数组buffer,返回读取的字节数。
int read(byte[] buffer, int offset, int length) 从offset位置开始读取length长度的字节,到buufer里。
void close() 关闭。
4、继承自OutputStream的流都是用于写数据的。单位为字节。
方法:void write(int b) 向输出流写入一个字节,内容为b的低八位。
void write(byte[] b) 将一个字节类型的数组中的数据写入到输出流
void write(byte[] b ,int off, int len) 讲一个字节类型的数组从off位置开始的len个字节写入到输出流中。
void flush() 将缓存中的数据全写入到目的地。close前使用。
void close() 关闭流,释放资源。
5、继承自Reader 和 Writer的流都是用于输入、输出数据的。单位为字符。方法类似Stream。
=======================================
具体流:
=======================================
6、
import java.io.*; public class Streamtest { public static void main(String[] args) { int b; FileInputStream in = null; try{ in = new FileInputStream("D:\\test1\\Streamtest\\src\\Streamtest.java"); } catch (FileNotFoundException e){ System.out.println("file not found!"); System.exit(-1); } try{ int num = 0; while((b = in.read()) != -1) { System.out.print((char)b); num++; } in.close(); System.out.println(); System.out.println("共获取了" + num + "个字符"); } catch (IOException e1){ System.out.println("文件读取错误!"); System.exit(-1); } } }
BufferedInputStream
import java.io.*; public class BufferStream { public static void main(String[] args) { try { FileInputStream in = new FileInputStream("D:\\test1\\Streamtest\\src\\Streamtest.java"); BufferedInputStream bis = new BufferedInputStream(in); int c = 0; //System.out.print((char)bis.read()); for(int i=0;i<30&&(c = bis.read())!=-1;i++) { System.out.print((char)c + " "); if(i == 10) bis.mark(1000); } System.out.println(); bis.reset(); for(int i=0;i<30&&(c = bis.read())!=-1;i++) { System.out.print((char)c + " "); } }catch(IOException e){ } } }
8、BufferedReader BufferedWriter
import java.io.*; public class BufferStream { public static void main(String[] args) { String s; try { FileWriter fw = new FileWriter("D:\\test0.txt"); FileReader fr = new FileReader("D:\\test0.txt"); BufferedReader br = new BufferedReader(fr); BufferedWriter bw = new BufferedWriter(fw); for(int i=0;i<10;i++) { s = String.valueOf(Math.random()); bw.write(s); bw.newLine();//换行 } bw.flush();//缓冲区内容写入目标 while((s = br.readLine())!=null) { System.out.println(s); } }catch(IOException e){ System.out.println("file not exist !"); } } }9、转换流:InputStreamReader 将InputStream转换为Rerader。 OutputStreamWriter 将OutputStream转换为Writer。
import java.io.*; public class BufferStream { public static void main(String[] args) { String s; try { OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\test.txt")); osw.write("i am end !"); System.out.println(osw.getEncoding()); osw.close(); osw = new OutputStreamWriter(new FileOutputStream("D:\\test.txt",true),"ISO8859_1"); osw.write("i an mumu !"); System.out.println(osw.getEncoding()); osw.close(); }catch(IOException e){ System.out.println("file not exist !"); } } }10、数据流:DataInputStream DaraOutputStream
可以直接读取 写入各种类型的数据。
--------------------------------------------------------------------
end、