黑马程序员--Java基础--09IO(一)
来源:互联网 发布:淘宝中国质造质量 编辑:程序博客网 时间:2024/05/05 02:38
----------- 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 blocke.printStackTrace();}if (bw != null)try {//关闭流用以释放底层资源bw.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
输出结果:
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
0 0
- 黑马程序员--Java基础--09IO(一)
- 黑马程序员-------java基础 IO流<一>
- 黑马程序员---------------JAVA基础-----------------IO流一
- 黑马程序员-----Java基础-----IO流(一)
- 黑马程序员--Java基础--IO
- 黑马程序员--------JAVA基础IO
- 【黑马程序员】-----java基础----IO
- 黑马程序员 Java基础 IO
- 黑马程序员-Java基础:IO
- 黑马程序员-java基础8--IO流(一)
- 黑马程序员——Java基础---IO流(一)
- 黑马程序员——java基础--IO流(篇一)
- 黑马程序员——JAVA基础-IO流(一)
- 黑马程序员---Java基础---IO流(一)
- 黑马程序员--java基础--IO流(一)字符流
- 黑马程序员——Java基础---IO(一)
- 黑马程序员--java基础--IO 流(一)
- 黑马程序员——java基础-IO(一)
- 统计图,有几个文件格式
- 用Python来写5种排序方法
- 跨界“抢粮食”
- ASP第二周作业(一)
- 回调
- 黑马程序员--Java基础--09IO(一)
- Set Up Git
- c++ 可变参数自定义print c/c++如何写一个带可变参数的函数
- 转载 java——最快捷的将输入流转换为String的方法
- 试试博客
- ASP.net第二周作业(二)
- 各种编程语言分类
- 用shell来写tcp的客户端测试wsv的情况
- spring mvc中返回ModelAndView后执行ajax异步请求