黑马程序员--java基础--io流(1)
2014-02-10 22:38
447 查看
------- android培训、java培训、期待与您交流! ----------
目录:1、io流概述 2、字符流 3、IO异常处理方式4、IO流-BufferedWriter(缓冲流-写) 5、BufferedReader(字符流读取缓冲区)6、装饰和继承的区别 7、字节流的缓冲区
1、IO流
1,IO流用来处理设备之间的数据传输
2,Java对数据的操作都是通过流的方式
3,Java用于操作流的对象都在IO包中
4,流按操作数据分两种:字节流(通用),字符流(融合了编码表)
5,流按流向分:输入流,输出流
字节流的抽象基类:InputStream,OutputStream
字符流的抽象基类:Readr,Writer
2、字符流:
FileReader
FileWriter
BufferedReader
BufferedWriter
FileWrite
FileReader
3、IO异常处理方式
4、IO流-BufferedWriter(缓冲流-写)
缓冲区的出现是为了提高流的操作效率而出现的。
所以在创建缓冲区之前,必须要现有流对象。
该缓冲区中提供了一个跨平台的换行符方法
newLine();
5、BufferedReader(字符流读取缓冲区)
该缓冲区中提供了一个一次读一行的方法readLine(),方便对文本数据的获取
当返回null时,表示读到文件末尾.
readLine()方法返回的时候值返回回车符之前的数据内容,并不返回回车符
6、装饰和继承的区别
装饰模式比继承要灵活,避免了继承体系的臃肿。
而且降低了类与类之间的关系。
装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强功能。
所以装饰类和被装饰类通常都是一个体系当中的
字节流:
InputStream
OutputStream
BufferedInputSream
BufferedOutputSream
示例:字节流拷贝文件
7、字节流的缓冲区
------- android培训、java培训、期待与您交流! ----------
目录:1、io流概述 2、字符流 3、IO异常处理方式4、IO流-BufferedWriter(缓冲流-写) 5、BufferedReader(字符流读取缓冲区)6、装饰和继承的区别 7、字节流的缓冲区
1、IO流
1,IO流用来处理设备之间的数据传输
2,Java对数据的操作都是通过流的方式
3,Java用于操作流的对象都在IO包中
4,流按操作数据分两种:字节流(通用),字符流(融合了编码表)
5,流按流向分:输入流,输出流
字节流的抽象基类:InputStream,OutputStream
字符流的抽象基类:Readr,Writer
2、字符流:
FileReader
FileWriter
BufferedReader
BufferedWriter
FileWrite
import java.io.*; class FileWriterDemo { public static void main(String[] args)throws IOException { //第一步:创建一个FileWriter对象。该对象一被初始化,就必须要明确要被操作的文件。 //而且该文件会创建到指定的目录下,如果该目录下已有同名文件,将被覆盖 //其实该步就是在明确数据要存放到目的地 FileWriter fw = new FileWriter("demo.txt"); //第二步:调用write方法,将字符串写入到流中 fw.write("abcd"); //第三步:刷新流对象中的缓冲中的数据。 //将数据刷新到目的地中 fw.flush(); fw.write("haha"); fw.flush(); //第四步,关闭资源,但是关闭之前会刷新一次内部的缓冲中的数据 //将数据刷新到目的地中,和flush的区别: //flush刷新后可以继续使用close刷新后,会将流关闭 fw.close(); } }
FileReader
import java.io.FileReader; import java.io.IOException; class FileReaderDemo { public static void main(String[] args)throws IOException { //创建一个文件读取流对象,和指定名称的文件相关联 //要保证文件是已经存在的,如果不存在,会发生异常FileNotFoundException FileReader fr = new FileReader("Demo.txt"); //调用读取流对象的read方法。 //read():一次读一个字符。而且会自动往下读 int ch = 0; while((ch=fr.read())!=-1) { System.out.println((char)ch); } /* while(true) { int ch = fr.read(); if(ch==-1) break; System.out.println((char)ch); } */ fr.close(); } }
3、IO异常处理方式
import java.io.FileWriter; import java.io.IOException; class FileWriteDemo2 { public static void main(String[] args) { FileWriter fw = null; try { //这里需注意的是,写盘符一定要两个\比如:c:\\demo.txt fw = new FileWriter("demo.txt"); fw.write("abcdddr"); } catch(IOException e) { System.out.println("catch:"+e.toString()); } finally { try//fw.close();也有异常,所以要继续捕获 { if(fw!=null)//一定要判断不为空 { fw.close(); } } catch(IOException e) { System.out.println(e.toString()); } } } }
4、IO流-BufferedWriter(缓冲流-写)
缓冲区的出现是为了提高流的操作效率而出现的。
所以在创建缓冲区之前,必须要现有流对象。
该缓冲区中提供了一个跨平台的换行符方法
newLine();
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; /** IO流-BufferedWriter演示 */ class BufferedWriterDemo { public static void main(String[] args)throws IOException { //创建一个字符流对象buf.txt FileWriter fw = new FileWriter("buf.txt"); //加入缓冲技术 BufferedWriter bw = new BufferedWriter(fw); //演示换行newLine() for(int x=0;x<5;x++) { bw.write("abcde"+x); bw.newLine(); bw.flush(); } //关闭缓冲区 bw.close(); } }
5、BufferedReader(字符流读取缓冲区)
该缓冲区中提供了一个一次读一行的方法readLine(),方便对文本数据的获取
当返回null时,表示读到文件末尾.
readLine()方法返回的时候值返回回车符之前的数据内容,并不返回回车符
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; /** * 演示BufferedReader */ class BufferedReaderDemo { public static void main(String[] args)throws IOException { //创建一个读取流对象 FileReader fr = new FileReader("buf.txt"); //创建一个读的流缓冲区对象 BufferedReader br = new BufferedReader(fr); //演示一行一行读的方法readLine(); String line = null; while((line = br.readLine())!=null) { System.out.println(line); } //关闭缓冲区 br.close(); } }
6、装饰和继承的区别
装饰模式比继承要灵活,避免了继承体系的臃肿。
而且降低了类与类之间的关系。
装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强功能。
所以装饰类和被装饰类通常都是一个体系当中的
字节流:
InputStream
OutputStream
BufferedInputSream
BufferedOutputSream
示例:字节流拷贝文件
class CopyPic { public static void main(String[] args)throws IOException { //拷贝的文件 FileOutputStream fos = null; //源文件 FileInputStream fis = null; try { fos = new FileOutputStream(d:\\2.jpg); fis = new FileInputStream(d:\\1.jpg); byte[] buf = new byte[1024]; int ch = 0; while((ch=fis.read(buf))!=-1) { fos.write(buf,0,ch); } } catch(IOException e) { System.out.println("复制失败"); } finally { try { if(fis!=null) fis.close(); } catch(IOException e) { System.out.println("读取关闭失败"); } try { if(fos!=null) fos.close(); } catch(IOException e) { System.out.println("复制关闭失败"); } } } } }
7、字节流的缓冲区
class CopyMp3 { public static void main(String[] args)throws IOException { long start = System.currentTimeMillis(); copy_1(); long end = System.currentTimeMillis(); System.out.println((end-start)+"毫秒"); } //通过字节流的缓冲区完成复制. public static void copy_1()throws IOException { BufferedInputStream bufis = new BufferedInputStream(new FileInputStream("H:\\1.mp3")); BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream("H:\\2.mp3")); int by = 0; while((by = bufis.read())!=-1) { bufos.write(by); } bufos.close(); bufis.close(); }
------- android培训、java培训、期待与您交流! ----------
相关文章推荐
- 黑马程序员——JAVA基础——IO流
- 黑马程序员—java基础_集合List和Set
- 黑马程序员---Java基础--10天(面向对象之五异常和包)
- 黑马程序员_java基础网络编程
- 黑马 程序员——Java基础---IO(下)
- 黑马程序员_Java基础——加强篇(上)
- 黑马程序员--Java基础Day12
- 黑马 程序员——Java基础---异常处理
- 黑马程序员_JAVA笔记21——IO流
- 黑马程序员----------java基础数据类型
- 黑马程序员-JAVA基础-正则表达式
- 黑马程序员_java基础笔记(01)...java的环境搭建
- 黑马程序员 Java基础——网络编程
- 黑马程序员-->Java基础-->集合
- 黑马程序员-JAVA基础入门总结
- 黑马 程序员——Java基础---面向对象(下)
- 黑马程序员——Java基础--------多线程(下)
- 黑马程序员—JAVA基础之多态
- 黑马程序员:Java基础总结----GUI&网络&IO综合开发
- 黑马程序员--Java基础--面向对象