字节流和字符流
什么是流?
在程序中所有的数据都是以流的方式进行传输和保存的。程序需要数据的时候使用输入流获取数据,而当程序需要将一些数据保存起来的时候就需要使用输出流完成。
字节流和字符流
在java.io包中操作文件内容主要有两大类:字节流和字符流。两个类都分为输入、输出操作。在字节流中输出数据主要用OutPutStream,输入数据主要使用InPutStream类完成。在字符流中主要用输出主要Write类完成,输入用Reader类完成。
举例:在D盘创建个.txt文件,并写入hello feimao
1 package com.feimao.a1; 2 import java.io.File; 3 import java.io.IOException; 4 import java.io.OutputStream; 5 import java.io.FileOutputStream; 6 7 public class OutPutStreamDemo01 { 8 public static void main(String args[]) throws Exception{ 9 File f = new File("d:" + File.separator + "test.txt");//声明file对象 10 OutputStream out = new FileOutputStream(f); 11 String str = "hello feimao"; 12 byte b[] = str.getBytes(); 13 out.write(b); 14 out.close(); 15 } 16 } 17 18
IO的默认操作是覆盖的,如果想追加操作,那就应该用FileOutputStream类。
字节输入流InputStream
既然程序可以向文件中写入内容,那么可以通过InputStream从文件中把内容取出。与OutputStream类一样,InputStream也是一个抽象类,必须依靠其子类,如果从文件中取出,那么子类肯定是FileInputStream类。
举例:从文件中读取数据
1 package com.feimao.a1; 2 3 import java.io.File; 4 5 import java.io.IOException; 6 7 import java.io.InputStream; 8 9 import java.io.FileInputStream; 10 11 12 13 public class InputStreamDemo01 { 14 15 public static void main(String args[]) throws Exception{ 16 17 File f = new File("d:" + File.separator + "test.txt");//声明file对象 18 19 InputStream input = new FileInputStream(f);//通过对象多态性为其实例化 20 21 /* String str = "hello feimao";*/ 22 23 byte b[] = new byte[1024]; 24 25 input.read(b); 26 27 input.close(); 28 29 System.out.println("内容 :" + new String(b)); 30 31 } 32 33 }