黑马程序员--Java基础--09IO(一)
2014-03-13 13:55
357 查看
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
Java中的流
Io流用来处理设备之间的数据传输
Java对数据的操作是通过流的方式
Java用于操作流的对象都在io包里
流的分类
流分为输入流和输出流
输入流包含字节输入流和字符输入流
输出流包含字节输出流和字符输出流
Io流常用基类:
字节流的抽象基类:InputStream,OutputStream。
字符流的抽象基类:Reader,Writer。
注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
例子1
向硬盘中的文件写入内容,因写入的内容为全部为文本格式的字符,因此选用字符输出流实现,代码如下:
对于写操作来说,当关联到的硬盘文件不存在时,将自动创建相应文件并写入相关内容。
例子2
通过字符输入输出流实现文本复制功能,文件复制其实就是频繁的读入写出操作,关键在于对文件类型及流的选择上。
代码如下:
例子3
完成硬盘中图片文件的复制操作,因图片文件为字节文件,因此选用字节流操作,同样是频繁的读入写出操作,代码如下:
缓冲区
缓冲区的出现是为了提高流的操作效率而出现的。
所以在创建缓冲区之前,必须要先有流对象。
该缓冲区中提供了一个跨平台的换行符,newLine();
例子:
输出结果:
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
Java中的流
Io流用来处理设备之间的数据传输
Java对数据的操作是通过流的方式
Java用于操作流的对象都在io包里
流的分类
流分为输入流和输出流
输入流包含字节输入流和字符输入流
输出流包含字节输出流和字符输出流
Io流常用基类:
字节流的抽象基类:InputStream,OutputStream。
字符流的抽象基类:Reader,Writer。
注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
例子1
向硬盘中的文件写入内容,因写入的内容为全部为文本格式的字符,因此选用字符输出流实现,代码如下:
public class IoTest { public static void main(String[] args) { FileWriter fw = null; //创建字符输出流对象 FileWriter fw1 = null; try { //使输出流对象与硬盘中的文件相关联 fw = new FileWriter("j:\\aa.txt"); //使输出流对象与硬盘中的文件相关联,true表示续写内容 fw1 = new FileWriter("j:\\aa.txt", true); //调用write方法向文件中写入内容 fw.write("asasfadfda"); //刷新操作 fw.flush(); //符号\r\n表示换行 fw1.write("\r\ndadsa\r\ndasdasfa"); fw1.flush(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (fw != null) //关闭流用以释放底层资源 fw.close(); } catch (IOException e) { e.printStackTrace(); } try { if (fw1 != null) fw1.close(); } catch (IOException e) { e.printStackTrace(); } }
对于写操作来说,当关联到的硬盘文件不存在时,将自动创建相应文件并写入相关内容。
例子2
通过字符输入输出流实现文本复制功能,文件复制其实就是频繁的读入写出操作,关键在于对文件类型及流的选择上。
代码如下:
//创建字符输入输出流对象 FileReader fr = null; FileWriter fw = null; try { //使字符输入输出流与文件关联 fr = new FileReader("j://aa.txt"); fw = new FileWriter("j://bb.txt"); //创建字符数组用以存储输入流读取的内容 char[] ch = new char[1024]; int num = 0; //使用频繁的读取写入操作完成文件复制 while ((num = fr.read(ch)) != -1) { fw.write(ch, 0, num); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (fr != null) //关闭流用以释放底层资源 fr.close(); } catch (IOException e1) { e1.printStackTrace(); } try { if (fw != null) //关闭流用以释放底层资源 fw.close(); } catch (IOException e) { e.printStackTrace(); } }
例子3
完成硬盘中图片文件的复制操作,因图片文件为字节文件,因此选用字节流操作,同样是频繁的读入写出操作,代码如下:
//创建字节输入输出流对象 FileInputStream fr = null; FileOutputStream fw = null; try { //使字节输入输出流与文件关联 fr = new FileInputStream(new File("J://1.bmp")); fw = new FileOutputStream(new File("J://2.bmp")); //创建字节数组用以存储输入流读取的内容 byte[] buf = new byte[1024]; int len = 0; //使用频繁的读取写入操作完成文件复制 while ((len = fr.read(buf)) != -1) { fw.write(buf, 0, len); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (fr != null) try { //关闭流用以释放底层资源 fr.close(); } catch (IOException e) { e.printStackTrace(); } if (fw != null) try { //关闭流用以释放底层资源 fw.close(); } catch (IOException e) { e.printStackTrace(); } }
缓冲区
缓冲区的出现是为了提高流的操作效率而出现的。
所以在创建缓冲区之前,必须要先有流对象。
该缓冲区中提供了一个跨平台的换行符,newLine();
例子:
// 创建字符输入输出缓冲流对象 BufferedReader br = null; BufferedWriter bw = null; try { //InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。 //它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。 //建立输入缓冲关联文件 br = new BufferedReader(new InputStreamReader(new FileInputStream( "J://aa.txt"))); // OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset // 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。 // 因System.out返回的为PrintStream因此使用该流进行转换 // 建立输出缓冲并打印在控制台上 bw = new BufferedWriter(new OutputStreamWriter(System.out)); //字符串用以存储读取的每行内容 String line = null; while ((line = br.readLine()) != null) { //向控制台写入 bw.write(line); //换行符 bw.newLine(); //刷新 bw.flush(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (br != null) try { //关闭流用以释放底层资源 br.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (bw != null) try { //关闭流用以释放底层资源 bw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
输出结果:
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
相关文章推荐
- 黑马程序员-Java基础-IO总结
- 黑马程序员--Java基础--10IO(二)
- 黑马程序员-java 基础之IO其他常用类
- 黑马程序员 java基础IO装饰者模式
- 黑马程序员——Java基础---IO(一)---IO流概述、字符流
- 黑马程序员——Java基础---IO(二)---IO字节流、流操作规律
- 黑马程序员——java基础——IO的学习总结
- 黑马程序员———Java基础——IO
- 黑马程序员——java基础-IO(二)
- 黑马程序员_java基础10--IO(2)和字符编码
- 黑马程序员 09 Java基础教学 - 09 - 多线程01 - 基础总结
- 黑马程序员——java基础——IO--字节流,字符流
- 黑马程序员——Java基础——IO(三)
- 黑马程序员 Java基础 IO
- 黑马程序员 之 Java基础 IO 流中的缓冲区 机制 Day04
- 黑马程序员——Java基础——IO输入与输出_2
- 黑马程序员————java基础---------IO输入输出之字节流
- 黑马程序员_Java基础_面向对象(五)_09
- 黑马程序员 java基础IO FileInputStream
- 黑马程序员——————java基础之Io二