黑马程序员——I/O

来源:互联网 发布:剑三纯阳成男脸型数据 编辑:程序博客网 时间:2024/04/30 01:12


(1)Input/Output

1,IO流用来处理设备之间的数据传输
2,Java对数据的操作是通过流的方式
3,Java用于操作流的对象都在IO包中
4,流按操作数据分为两种:字节流与字符流。 
5,流按流向分为:输入流,输出流。
 
6,字节流的抽象基类:
InputStream ,OutputStream。
7,字符流的抽象基类:
Reader , Writer。
8,注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream。前缀是该类的功能
如:Reader的子类FileReader。
(2)程序书写步骤
1,导入IO包中的类
package cn.wms.io;import java.io.*;public class FileWriterDemo{public static void main(String[] args)throws IOException{FileWriter fw = new FileWriter("demo.txt");fw.write("wangmeisonghome");fw.flush();fw.write(" Welcome to notepad world!");fw.close();}}
new FileWriter("demo.txt");   //创建FileWriter对象,要明确该文件输出流要操作的文件,这个文件会被创建到指定的目录,如果目录下有同名文件将被覆盖。write(String  str); //将字符串写到输出流中。flush(); //将流的缓冲中的数据刷到目的地close(); //将流资源关闭,关闭之前,将流的缓冲中的数据刷到目的地,关闭之后不能再对该流操作。  

flush和close的区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。


2,进行IO异常处理
package cn.wms.io;import java.io.*;class FileWriterDemo2{public static void main(String[] args){FileWriter fw = null; //对引用变量声明作用于整个main函数;try{fw = new FileWriter("k:\\demo.txt");// 对FileWriter对象初始化,编译结果:FileNotFoundExceptionfw.write("abcdefghijklmnopqrstuvwxyz!");}catch (IOException e){System.out.println(e.toString());}finally{try{if(fw!=null)fw.close(); //关闭流资源是必须要操作的,要判断,fw是否为空,否则NullPointerException}catch (IOException e){System.out.println(e.toString());}}}}

其他的FileWriter对象的方法:
package cn.wms.io;import java.io.*;public class FileWriterDemo3{public static void main(String[] args){FileWriter fw = null;char[] chs = {'H','e','l','l','o','!'};try{fw = new FileWriter("demo.txt",true);//true代表不覆盖已有的文件,在已有文件末尾处进行数据续写fw.write("avkjkljl;j;j.");//write(String);fw.write('z');fw.write('.');         //write(int );fw.write(chs);        //write(char[]);fw.write(chs, 2,2);  //write(char[], int offset, int len);}catch (IOException e){System.out.println(e.toString());}finally{try{if(fw!=null)fw.close();}catch (IOException e){System.out.println(e.toString());}}}}

3,在finally中对流进行关闭

思考:

有了垃圾回收机制为什么还要调用close方法进行关闭。 
为什么IO异常一定要处理。
(3)FileWriter和FileReader

 《1》FileReader 文件读取流

第一种方式读取文件:

package cn.wms.io;import java.io.*;public class FileReaderDemo{public static void main(String[] args)throws IOException{//创建一个文件读取流对象,和指定名称的文件相关联。//要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundExceptionFileReader fr = new FileReader("demo.txt");int ch=0;while((ch = fr.read())!=-1)   //read();一次读取一个字符,而且会自动往下读。{System.out.println((char)ch);}}}

第二种读取文件:

package cn.wms.io;import java.io.*;public class FileReaderDemo2{public static void main(String[] args)throws IOException{FileReader fr = new FileReader("demo.txt");//定义一个字符数组。用于存储从文件中读到的字符。//该read(char[])返回的是读到字符个数。char[] buf = new char[1024];int num = 0;while ((num = fr.read(buf))!=-1){System.out.println(new String(buf,0,num));}fr.close();}}


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原创粉丝点击