一.抽象基类InputStream、OutputStream
1.字节流可以操作任何数据 2.字符流使用的是字符数组;字节流使用的是字节数组 3.InputStream常用的方法 read():从流中读取数据 available():返回流中可用的字节数 4.OutputStream常用的方法 Write(int b);将一个整数输出到流中 实例9,FileInputStream和FileOutputStream的使用。 FileOutputStream fos = new FileOutputStream("a.txt"); fos.write("abcde");//直接将数据写入到了目的地。 fos.close();//只关闭资源。 FileInputStream fis = new FileInputStream("a.txt"); //fis.available();//获取关联的文件的字节数。
//如果文件体积不是很大,可以这样操作。 byte[] buf = new byte[fis.available()];//创建一个刚刚好的缓冲区。但是这有一个弊端,就是文件过大,大小超出jvm的内容空间时,会内存溢出。 fis.read(buf);
System.out.println(new String(buf)); 二.转换器 1.OutputStreamWriter和InputStreamReader的构造—他们本身是字符流,又具有转换的作用,因此在构造的时候,需要传入字节流对象 public OutputStreamWriter(OutputStream out) public OutputStreamWriter(OutputStream out,String charsetName) public InputStreamReader(InputStream in) public InputStreamReader(InputStream in,String charsetName) 实例10,转换流的使用。 操作文件的字符流FileReader和FileWriter是转换流的子类,因此从他们的继承关系就可以清楚的发现,不管是使用字节流还是字符流实际上最终都是以字节的形式操作输入和输出的。 注意:在使用FileReader操作文本数据时,该对象使用的是默认的编码表。如果要使用指定编码表时,必须使用转换流。
FileReader fr = new FileReader("a.txt"); //操作a.txt的中的数据使用的本系统默认的GBK InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt")); 三.标准输入输出流 1.标准输入System.in 1.public int read() throws IOException 2.public int read(byte[] i) throws IOException 2标准的输出System.out 1.public void print(参数) 2.public void println(参数) |
|