Javase-I/O
2016-01-07 14:44
531 查看
1.基础流:
字节流:
文件流:FileInputStream, FileOutputStream
字节数组流:ByteArrayInputStream, ByteArrayOutputStream
字符流:
文件流:FileReader, FileWriter
字符数组流:CharArrayReader, CharArrayWriter
2.修饰流:
字节流:
缓冲:BufferedInputStream, BufferedOutputStream
字符流:
缓冲:BufferedReader, BufferedWriter
下面逐个测试:
FileInputStream, FileOutputStream
这里bis从文件file.txt按字节读取文件内容到字节数组bytes,bos将字节数组写入file1.txt文件,并在控制台输出。
ByteArrayInputStream, ByteArrayOutputStream:
ByteArrayOutputStream中有字节缓冲,这里将289写入一个字节,发生截断,使用baos.toByteArray()取出字节数组,打印其长度为1,用该字节数组初始化ByteArrayInputStream,从bais取出该字节数组中的一个字节,强转为char类型,33对应的assci码为!,所以输出!。
FileReader, FileWriter
fr从file.txt读取内容到字符数组,并将其打印,fw将字符数组写入文件fileTo.txt。
CharArrayReader, CharArrayWriter
输出:
BufferedInputStream, BufferedOutputStream:
BufferedInputStream, BufferedOutputStream是修饰流,还是按字节读取,增加了缓冲机制,这是实现了按字节将file.txt的内容复制到fileTo.txt中。
BufferedReader, BufferedWriter:
BufferedReader, BufferedWriter是修饰流,提供按行读取的功能,这里向文件写入三行数据,然后按行读取。
字节流:
文件流:FileInputStream, FileOutputStream
字节数组流:ByteArrayInputStream, ByteArrayOutputStream
字符流:
文件流:FileReader, FileWriter
字符数组流:CharArrayReader, CharArrayWriter
2.修饰流:
字节流:
缓冲:BufferedInputStream, BufferedOutputStream
字符流:
缓冲:BufferedReader, BufferedWriter
下面逐个测试:
FileInputStream, FileOutputStream
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.RandomAccessFile; import java.io.StringBufferInputStream; public class FileStream { public static void main(String[] args) throws IOException { //测试FileInputStream,FileOutputStream FileInputStream fis = new FileInputStream("file.txt"); FileOutputStream fos = new FileOutputStream("file1.txt"); byte[] bytes = new byte[fis.available()]; fis.read(bytes); fos.write(bytes); String s; s = new String(bytes); System.out.println(s); } }
这里bis从文件file.txt按字节读取文件内容到字节数组bytes,bos将字节数组写入file1.txt文件,并在控制台输出。
ByteArrayInputStream, ByteArrayOutputStream:
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; public class ByteStreamTest { public static void main(String args[]) { //测试ByteArrayOutputStream ByteArrayOutputStream baos = new ByteArrayOutputStream(); //289截断到一个字节后二进制为0000 0033,对应的ascii字符为'!' //原型为write(int),将289写入到字节数组 baos.write(289); byte[] b = baos.toByteArray(); System.out.println(b.length); //这里字节又被强转为两个字节的char类型,二进制为0000 0000 0000 0033 System.out.println((char)b[0]); ByteArrayInputStream bais = new ByteArrayInputStream(b); //这里read()将1个字节0000 0033转为整型返回,之后又强转为char char c = (char) bais.read(); System.out.println(c); } }
ByteArrayOutputStream中有字节缓冲,这里将289写入一个字节,发生截断,使用baos.toByteArray()取出字节数组,打印其长度为1,用该字节数组初始化ByteArrayInputStream,从bais取出该字节数组中的一个字节,强转为char类型,33对应的assci码为!,所以输出!。
1 ! !
FileReader, FileWriter
import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class FileReaderWriterTest { public static void main(String args[]) throws IOException { FileReader fr = new FileReader("file.txt"); char[] s1 = new char[100]; //按字符也就是两个字节读入到字节数组 fr.read(s1); for (int i = 0; i < s1.length; i++) System.out.print(s1[i]); char[] s2 = {'你', '好'}; FileWriter fw = new FileWriter("fileTo.txt"); //将字符数组写入到文件 fw.write(s2); //关闭文件,刷新缓冲区 fw.close(); fr.close(); } }
fr从file.txt读取内容到字符数组,并将其打印,fw将字符数组写入文件fileTo.txt。
CharArrayReader, CharArrayWriter
import java.io.CharArrayReader; import java.io.CharArrayWriter; import java.io.IOException; public class CharArrayReaderWriterTest { public static void main(String[] args) throws IOException { CharArrayWriter caw = new CharArrayWriter(); char[] c = {'字', '符', '数', '组'}; //将字符数组写入缓冲区 caw.write(c); //获取字符数组 char[] cc = caw.toCharArray(); String s = new String(cc); System.out.println(s); //使用字符数组c构造CharArrayReader CharArrayReader car = new CharArrayReader(c); int a; //读取每个字符 while ( (a = car.read()) != -1) { System.out.println((char)a); } } }
输出:
字符数组 字 符 数 组
BufferedInputStream, BufferedOutputStream:
public class BufferedStream { public static void main(String args[]) throws IOException { //修饰流,需要由InputStream,OutputStream构造,本质上还是按字节读入写出,但是增加了缓冲 BufferedInputStream bis = new BufferedInputStream(new FileInputStream("file.txt")); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("fileTo.txt")); int bytesCount = 0; int a; while ( (a = bis.read()) != -1) { bytesCount++; bos.write(a); } System.out.println("读取的字节数:"+bytesCount); //记得关闭流,刷新缓冲区 bis.close(); bos.close(); } }
BufferedInputStream, BufferedOutputStream是修饰流,还是按字节读取,增加了缓冲机制,这是实现了按字节将file.txt的内容复制到fileTo.txt中。
BufferedReader, BufferedWriter:
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class BufferedReadWriterTest { public static void main(String args[]) throws IOException { BufferedWriter bw = new BufferedWriter(new FileWriter("file.txt")); BufferedReader br = new BufferedReader(new FileReader("file.txt")); bw.write("第一行\n"); bw.write("第二行\n"); bw.write("第三行\n"); bw.flush(); String s; while ( (s = br.readLine()) != null) { System.out.println(s); } br.close(); bw.close(); } }
BufferedReader, BufferedWriter是修饰流,提供按行读取的功能,这里向文件写入三行数据,然后按行读取。
第一行 第二行 第三行
相关文章推荐
- java爬虫糗百
- struts2的整体回顾(ACTION、拦截器、值栈、OGNL表达式、ModelDriven方案等)
- Java生成登陆时使用的图片验证码
- android studio应用(一):导入eclipse项目
- JCF框架源码分析系列-开头篇(一)
- java synchronized详解
- Struts2中的ModelDriven机制及其运用
- java 线程池
- Spring 4.2.X 测试方面的变化
- Eclipse的Ndk环境初步开发搭建测试NDK_R10
- Java中使用webservice,简化开发(xfire的webservice)
- commons-io在struts框架中无法获取upload.parseRequest(request)
- java 初始化过程
- java中 == 与 equal区别 转
- struts2+uploadily上传控件
- Struts2注解详解
- Eclipse 快捷键技巧 + 重构
- spring定时任务的几种实现方式
- eclipse导出war包排除svn文件
- eclipse 配置黑色主题