java I/O流详解
2016-07-12 14:37
399 查看
概念
java中一切都是面向对象的,在I/O流操作中,可分为数据对象和操作数据对象,对流操作的单元可分为字节流和字符流。字节流:
1)操作对象是字节,字节是数据在计算机中存储的单元,是一个二进制数
2)是直接操纵文件
字符流:
1)操作对象是文本,字符是抽象符号定义
2)会将数据放入缓冲区,在操作流对象关闭的时候,从缓冲区中写出数据
输入流:
对数据操作,以流的形式存在,从流中读取数据
输出流:
对数据处理,写入到流中,写出到文件中
字节流
SequenceInputStream
SequenceInputStream sequenceInputStream = null; Vector<FileInputStream> vector = new Vector<FileInputStream>(); vector.addElement(new FileInputStream(new File("D://text1.txt"))); vector.addElement(new FileInputStream(new File("D://text2.txt"))); vector.addElement(new FileInputStream(new File("D://text3.txt"))); vector.addElement(new FileInputStream(new File("D://text4.txt"))); Enumeration<FileInputStream> e = vector.elements(); sequenceInputStream = new SequenceInputStream(e); FileOutputStream outputStream1 = new FileOutputStream(new File("D://file2.txt")); //输出流 操作单元以数组形式 //每次读一个字节,缓存到字节数组中,然后返回 byte[] buffer1 = new byte[1024]; int temp = 0 ; while((temp = sequenceInputStream.read(buffer1)) != -1){ System.out.println((char)temp); //将字节数组buffer1偏移量0长度为temp的数据写出 outputStream1.write(buffer1, 0, temp); //强制将缓冲区的数据输出到输出流 outputStream1.flush(); } sequenceInputStream.close(); outputStream1.close();
ByteArrayInputStream
String str = "welcome to shanghai"; //输出到控制台 PrintStream printStream = new PrintStream(System.out); ByteArrayInputStream byteInputStream = new ByteArrayInputStream(str.getBytes()); int index = 0; //从字节流中一个个字节读取并返回 while((index = byteInputStream.read()) != -1){ printStream.write(index); } printStream.close(); byteInputStream.close();
Object(Input/Output)Stream ##
//输出流 将数据写出到流中 TestBean bean = new TestBean(); bean.setName("shanghai"); OutputStream outputStream = new FileOutputStream("object.data"); ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream); objectOutputStream.writeObject(bean); //输入流 从流中将数据读取 InputStream inputStream = new FileInputStream("object.data"); ObjectInputStream objectInputStream = new ObjectInputStream(inputStream); TestBean testBean = (TestBean) objectInputStream.readObject(); //输出到控制平台 PrintStream print = new PrintStream(System.out); print.print(testBean.getName()); outputStream.close(); objectOutputStream.close(); inputStream.close(); objectInputStream.close(); print.close();
Data(Input/Output)Stream
OutputStream outputStream = new FileOutputStream("object.data"); DataOutputStream dataOutputStream = new DataOutputStream(outputStream); TestBean bean = new TestBean(); bean.setName("shanghai"); dataOutputStream.writeUTF(bean.getName());; InputStream inputStream = new FileInputStream("object.data"); DataInputStream dataInputStream = new DataInputStream(inputStream); String str = dataInputStream.readUTF(); PrintStream print = new PrintStream(System.out); print.print(str); outputStream.close(); dataOutputStream.close(); inputStream.close(); dataInputStream.close(); print.close();
字符流
FileReader reader = new FileReader(new File("D://text1.txt")); PrintWriter writer = new PrintWriter(System.out); int index = 0; char[] chars = new char[512]; while((index = reader.read(chars)) != -1){ writer.write(chars, 0, index); } reader.close(); writer.close();
相关文章推荐
- Mysql IO 内存方面的优化
- Node.js 的异步 IO 性能探讨
- SQL Server误区30日谈 第22天 资源调控器可以调控IO
- mysql 数据同步 出现Slave_IO_Running:No问题的解决方法小结
- java中的Io(input与output)操作总结(一)
- GO语言的IO方法实例小结
- java中的Io(input与output)操作总结(四)
- C#路径,文件,目录及IO常见操作汇总
- SQL语句实现查询当前数据库IO等待状况
- Java进阶教程之IO基础
- java中的Io(input与output)操作总结(三)
- Java 1.0和Java 1.1 的IO类的比较
- Java中的BufferedInputStream与BufferedOutputStream使用示例
- JAVA IO API使用详解
- Java NIO和IO的区别
- Java编程中最基础的文件和目录操作方法详解
- Python中使用select模块实现非阻塞的IO
- Python通过poll实现异步IO的方法
- Python通过select实现异步IO的方法
- Java编程中字节流与字符流IO操作示例