黑马程序员_IO_01

来源:互联网 发布:旅游数据统计中心 编辑:程序博客网 时间:2024/05/30 07:12


----------------------Android培训、Java培训、java学习型技术博客、期待与您交流! ----------------------



IO流

IO流用来处理设备之间的数据传输,Java对数据的操作是通过流方式。ava用于操作流的对象都在IO包中

流按操作数据分为两种:字节流和字符流

流按流向分为:输入流,输出流

 IO流常用基类

字节流的抽象基类

InputStream,OutputStream

字符流的抽象基类

Reader,Writer

注:由这四个类派生出来的子类名称都是以其父类类名作为子类类名的后缀。

Writer:

 

//在硬盘上创建文件,并写入一些文字数据。//在结尾处学些该文件import java.io.*;class WriterDemo {public static void main(String[] args){FileWriter fw = null;try{//创建一个FileWriter对象。该对象一初始化就必须要明确被操作的文件//而且该文件会被创建到指定的目录下。如果该目录下已有同名文件,将被覆盖。//该步是明确数据要存放的目的地。fw = new FileWriter("java.txt");//将数据写入流中。fw.write("abcde");//刷新流对象的缓冲中的数据,将数据刷到目的地中。//fulsh刷新后,该流还可以继续使用fw.flush();}catch (IOException e){System.out.println(e.toString());}finally{//关闭流资源是必须要做的动作,所以放到finally中try{//防止发生NullPointerException异常if(!(fw==null))//关闭流资源,关闭前会刷新一次内部缓冲中的数据,将数据刷到目的地中。//close刷新后,会将流关闭,不可以在使用。fw.close();}catch (IOException e){System.out.println(e.toString());}}//续写try{//传递一个参数true,代表不覆盖已有的文件,并在已有的文件末尾处继续续写数据。fw = new FileWriter("java.txt",true);//“\r\n”是Windows下的回车换行符,而Linux下的回车换行符为“\n”.fw.write("1234\r\nzaijian");fw.flush();}catch (IOException e){System.out.println(e.toString());}finally{try{if(!(fw==null))fw.close();}catch (IOException e){System.out.println(e.toString());}}}}

Reader:

//文件读取方式一:import java.io.*;class ReaderDemo1 {public static void main(String[] args) {FileReader fr = null;try{//创建一个文件读取流对象,和指定的名称的文件相关联//要保证文件是已经存在的 ,如果不存在,会发生FileNotFoundException异常fr = new FileReader("java.txt");//int read()作为整数读取的字符,范围在0到65535之间(0x00-0xffff),如果已到达流的末尾,则返回 -1。for(int ch=fr.read();!(ch==-1); ch=fr.read())System.out.print((char)ch);}catch (IOException e){System.out.print(e.toString());}finally{try{if(!(fr==null))fr.close();}catch (IOException e){System.out.println(e.toString());}}}}
//文件读取的第二种方式:import java.io.*;class ReaderDemo2 {public static void main(String[] args) {FileReader fr = null;try{fr = new FileReader("java.txt");char[] arr = new char[7];//int read(char[] cbuf)方法://将文件中的内容读取到字符数组中,返回读取的字符个数。当读取到流的结尾时返回-1.for(int num=fr.read(arr);!(num==-1); num=fr.read(arr)){String str = new String(arr,0,num);System.out.print(str);}}catch (IOException e){System.out.println(e.toString());}finally{try{if(!(fr==null))fr.close();}catch (IOException e){System.out.println(e.toString());}}}}


BufferedWriter:

/*BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。构造函数:BufferedWriter(Writer out)--创建一个使用默认大小输出缓冲区的缓冲字符输出流。 BufferedWriter(Writer out, int sz)--创建一个使用给定大小输出缓冲区的新缓冲字符输出流。特有方法:void newLine()--写入一个行分隔符。*/import java.io.*;class BufferedWriterDemo{public static void main(String[] args) {BufferedWriter bfw = null;try{//创建一个写入流对象//使用BufferedWriter提高字符写入效率//将流对象作为参数传递给缓冲区的构造函数bfw = new BufferedWriter(new FileWriter("java02.txt"));for(int x=0; x<4; x++){bfw.write("abcd1234");bfw.newLine(); bfw.flush();}}catch (IOException e){System.out.println(e.toString());}finally{try{if(!(bfw==null))//关闭缓冲区就是在关闭缓冲区的流对象bfw.close();}catch (IOException e){System.out.println(e.toString());}}}}


BufferedReader:

/*BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。构造函数:BufferedReader(Reader in)--创建一个使用默认大小输入缓冲区的缓冲字符输入流。BufferedReader(Reader in, int sz)--创建一个使用指定大小输入缓冲区的缓冲字符输入流。特有方法:String readLine()--读取一个文本行。包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null。*/import java.io.*;class BufferedReaderDemo{public static void main(String[] args) {BufferedReader bfr = null;try{//创建一个读取流对象和文件相关联//使用BufferedReader来提高效率。//将字符读取流对象作为参数传递给缓冲对象的构造函数bfr = new BufferedReader(new FileReader("java02.txt"));//readLine()方法可以一行一行的读取,但不包含终止符。//当读到文件末尾则返回null。for(String str=bfr.readLine(); !(str==null); str=bfr.readLine()){System.out.println(str);}}catch (IOException e){System.out.println(e.toString());}finally{try{if(!(bfr==null))bfr.close();}catch (IOException e){System.out.println(e.toString());}}}}


----------------------Android培训、Java培训、java学习型技术博客、期待与您交流! ----------------------




0 0
原创粉丝点击