IO有字节流和字符流两种:
1.java.io.InputStream 字节输入流
2.java.io.OutputStream 字节输出流
3.java.io.Reader 字符输入流
4.java.io.Writer 字符输出流
这两大流都是抽象类(abstract class)
所有的流都需实现close( ) 方法,因为流是内存和硬盘的通道,用完流不关闭会浪费很多内存资源造成不必要的影响。
此外所有输出流都需实现flush( )方法,flush( )方法是用于清除,刷新缓冲区使流可以继续使用,如果在close( )之前不使用flush( )刷新缓存区的话,就只能传输缓存区大小的数据给目标文件。
FileInputStream:
该类用于从文件读取数据,它的对象可以用关键字 new 来创建。
创造FileInputStream对象的方式有两种:
1.使用字符串类型的文件名来创建一个FileInputStream对象来读取文件:
FileOutputStream f = new FileOutputStream("D:/java");
2.使用一个文件对象来创建一个输入流对象来读取文件:
File f = new File("D:/java");
FileInputStream fis = new FileInputStream(f);
FileInputStream:
该类用于创造一个文件并向文件中传数据,如果FileInputStream在输入前,目标文件不存在则该流会自动创造一个目标文件。
1.使用字符串类型的文件名来创建一个FileInputStream对象来读取文件:
FileOutputStream f = new FileOutputStream("D:/java");
2.使用一个文件对象来创建一个输入流对象来读取文件:
File f = new File("D:/java");
FileOutputStream fos = new FileOutputStream(f);
FileInputStream实例:
package IO; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class Test { public static void main(String[] args) { FileInputStream fis=null; try{ fis=new FileInputStream("D:/java"); //开始读,采用byte数组 byte[] bytes=new byte[4]; int count=0;//读取到字节数量 while((count= fis.read(bytes))!=-1){ System.out.println(new String(bytes,0,count)); } } catch (FileNotFoundException e) { e.printStackTrace(); throw new RuntimeException(e); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); }finally{//finally必须确保流一定关闭 if(fis!=null){//避免空指针异常 try{ fis.close(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } } } } }