输入流与输出流
来源:互联网 发布:管家婆数据库安装 编辑:程序博客网 时间:2024/05/24 05:36
首先明确下输入与输出的含义:
输入:将硬盘上的资料输入内存显示在控制台
输出:将内存中(程序)的资料输出到硬盘上
Java的 I/O流提供大量的流类,其中有四个重要的抽象类:InputStream、OutputStream、Reader、Writer
InputStream和Reader类提供了读取数据的read()方法;OutputStream和Writer提供了写入数据的write()方法
这张图是涵盖了IO流常用的类下面一一介绍
1.FileOutputStream与FileInputStream
构造方法有:FileOutputStream(Stirng name) FileOutputStream(File file)
FileInputStream(String name)FileInputStream(File file)
例:用字节输出流往当前目录生成的a.txt文件里输入字符串helloworld
File file = new File("a.txt");FileOutputStream fos = new FileOutputStream(file); //或者new FileOutputStream("a.dat")String str = "helloworld";fos.write(str.getBytes()); //字符串转化成字节数组再调用write(byte[])方法一次性写入fos.close();//用完记得关闭System.out.println("输出成功");
注意:若new FileOutputStream(file,true);参数列表中有true则在写入时不会覆盖原有内容例:用字节输入流读取当前目录下的a.txt 文件中的字符串输出的控制台
File file = new File("a.txt"); FileInputStream fis = new FileInputStream(file); int d =-1; while((d=fis.read())!=-1){ //挨个字节读取,直到返回-1表示读到末尾 System.out.print((char)d); } fis.close();用字节数组输入流读取当前目录下的a.txt文件中的字符串输出到控制台
File file = new File("a.txt"); FileInputStream fis = new FileInputStream(file); byte[]b = new byte[(int) file.length()]; int d =0; while((d=fis.read(b))!=-1){ //若此处为fis.read(b,0,3)则表示每次读取最大3个字节 System.out.println(new String(b)); } fis.close();2.BufferedOutputStream与BufferedInputStream
字节缓冲流是加载 在节流上的 使用时必须往其构造器中传一个字节流对象
例:用字节缓冲流方式向当前目录下的a.txt文件写入helloworld
FileOutputStream fos = new FileOutputStream("a.txt");BufferedOutputStream bos = new BufferedOutputStream(fos);//将缓冲器加在输入流上String str = "helloworld";bos.write(str.getBytes());bos.close();//相对fos来说bos是高级流,结束时只需关闭高级流System.out.println("输出成功");例:用字节缓冲流方式读取当前目录下a.txt文件的内容并打印
File file = new File("a.txt"); FileInputStream fis = new FileInputStream(file); BufferedInputStream bis = new BufferedInputStream(fis); int d =0; while((d=bis.read())!=-1){ System.out.print((char)d); } bis.close();字节数组读取方式不再演示同上。
注意:缓冲流在读取和输出时是在将缓冲区存满后再执行输入或输出操作。
3.ObjectOutputStream 与 ObjectInputStream
要进行序列化则该类必须实现接口Serializable
例:将员工类Emp 的一个对象序列化到文件emp.obj中
FileOutputStream fos = new FileOutputStream("emp.obj"); ObjectOutputStream oos = new ObjectOutputStream(fos); Emp emp = new Emp("张三",15,"男",4000); oos.writeObject(emp); System.out.println("序列化完毕"); oos.close();例:将emp.boj中的Emp对象进行反序列化
FileInputStream fis = new FileInputStream("emp.obj"); ObjectInputStream ois = new ObjectInputStream(fis); Emp emp = (Emp)ois.readObject();//读出时要进行强转 System.out.println("反序列化完毕"); System.out.println(emp); ois.close();注意:对象流和缓冲流都必须依托字节流而存在
4.FileWriter 与FileReader
字符输入流与输出流,用法与字节输入出流相似,区别是该方法操作的是字符或字符数组
例:向该目录下的a.txt文件中写入helloworld
File file = new File("a.txt"); FileWriter fw = new FileWriter(file); String str = "helloworld"; fw.write(str.toCharArray()); //转化成字符数组 fw.close(); System.out.println("输出成功");例:用读取字符的方式将该目录下的a.txt文件中的内容读取出来并打印
File file = new File("a.txt"); FileReader fr = new FileReader(file); int d =0; while ((d=fr.read())!=-1) { System.out.print((char)d);} fr.close();用读取数组的方式将该目录下a.txt文件中的内容读取出来并打印
File file = new File("a.txt"); FileReader fr = new FileReader(file); char[]c = new char[(int) file.length()]; int d =0; while ((d=fr.read(c))!=-1) { System.out.print(new String(c));} fr.close();5.BufferedWriter 与 BufferedReader
字符缓冲流是提供了按行读取字符串的方法readLine(),每次调用读取一行内容
例:用字符缓冲流向该目录下的a.txt文件写入helloworld
File file = new File("a.txt"); FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw); String str = "helloworld"; bw.write(str.toCharArray()); bw.close(); System.out.println("输出成功");例:用字符缓冲流读取该目录下的a.txt中的内容并打印
File file = new File("a.txt"); FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); String line = null; while((line=br.readLine())!=null){ System.out.println(line); } fr.close();6.转换流OutputStreamWriter 与 InputStreamReader() 这两种转换流是加载在字节流上可以将字节流转化成字符流
例:按指定的字节码向文件中写入内容:
FileOutputStream fos = new FileOutputStream("osw.txt"); OutputStreamWriter osw = new OutputStreamWriter(fos,"GBK");//传参时定义转换的字节码 osw.write("Mr范"); osw.close();例:按指定编码读出文件中的内容:
FileInputStream fis = new FileInputStream("osw.txt"); InputStreamReader isr = new InputStreamReader(fis,"GBK"); int chs = -1; while((chs = isr.read()) != -1){ System.out.println((char)chs); } isr.close();
- 输入与输出,流!
- 输入流与输出流
- 输入流与输出流
- IO流-输入与输出
- java输入与输出流
- 输入流与输出流学习1
- 输入流与输出流的总结
- Java输入流与输出流
- 关于输入流与输出流
- 数据输入流与数据输出流
- java字符输入流与输出流
- 输入字节流与输出字节流
- 输入字符流与输出字符流
- 输入流与输出流的区别
- 输入流与输出流的区别
- IO输入与输出--节点流--01
- IO输入与输出--处理流--03
- JAVA---IO流的输入与输出
- 长度是指字节还是字符
- 【实训】第六周总结下
- java获取页面输入的值
- mysql利用group_concat()合并多行数据到一行
- stack和queue的错题
- 输入流与输出流
- Chipscope信号无法找到的解决方案
- 构建我的第一个Ionic项目
- quick-cocos2d-x CCHttpRequest詳細說明及用法
- 第2章 Liunx 安装maven
- 矩阵快速幂
- git学习笔记
- Android 深入分析Activity生命周期
- jdbc.properties