- 什么是IO?
input/output 输入输出 -
Java如何处理IO?
1.java把不同的输入/输出(键盘、文件、网络等)抽象描述为 "流"(stream)。
2.用相同的方式--"流"来处理 不同的输入/输出。 -
什么是"流"?
和电流、水流一样,只不过这里是数据流。 -
流的分类
1.输入流/输出流(流向)
如何判断是输入流 还是输出流?
这是一个相对问题!关键是找好参照?输入输出都是从程序运行所在的内存角度来看。
. 我的记法: input*.read(); output*.write(); 最后你只要知道你现在是读还是写即可。
2.字节流和字符流
字节流操作数据的单元是8位的字节,字符流是16位的字符。
字节流:InputStream和OutputStream作为父类。
字符流:Reader和Write作为父类。
处理文本的建议用 字符流。
处理其他的建议用 字节流。
比较通用的就是字节流。
- 字节流和字符流的转化:InputStreamReader 和 OutputStreamWriter
- java io功能强大看似复杂但实际是有规律的,它采用的是“装饰器设计模式”。
- 部分io相关类
解释:
文件流:顾名思义,提供了更加便利和强大的文件流操作。
缓冲流:增加了缓冲功能,提高了读写效率 但是注意一定要是使用flush()方法来处理缓冲区。
转换流:将字节流转换成字符流。
管道流:处理线程之间的通讯。
更多的请看java.io包 - 序列化(请关注后续文章)
package com.cxyapi.io; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.InputStream; import java.io.OutputStream; /** IO * @author cxy @ www.cxyapi.com */ public class IoTest { public static void main(String[] args) throws Exception { writeDataToFile(); System.out.println("-------------------------"); readDataFromFile(); System.out.println("-------------------------"); copyFile("D:"+File.separator, "cxyapi.txt", "D:"+File.separator, "cxyapi复制.txt"); } /**写数据到文件 站在内存角度 将内存输出到文件,所以应该用输出流 * @throws Exception */ public static void writeDataToFile() throws Exception { String filePath="d:/cxyapi.txt"; File f=new File(filePath); if(!f.exists()) { f.createNewFile(); } OutputStream out=new FileOutputStream(f); String str="更多内容请访问:\r\nwww.cxyapi.com"; byte[] buffer=str.getBytes(); out.write(buffer); out.flush(); out.close(); System.out.println("文件写入完成"); } /**从文件读取数据 * @throws Exception */ public static void readDataFromFile() throws Exception { String filePath="d:/cxyapi.txt"; File f=new File(filePath); if(!f.exists()) { f.createNewFile(); } InputStream in=new FileInputStream(f); byte[] buffer=new byte[(int)f.length()]; int len=in.read(buffer); in.close(); System.out.println(new String(buffer,0,len)); //System.out.println("完成"); } /** 文件拷贝 字节流 (通用) * 字节流的方式和这个类似,只不过使用的是(FileReader和FileWriter), * 但是他只能拷贝字符文件,字节文件 会出现文件丢失数据的情况。 * 所以为了通用 这里只展示通用的字节流方式 */ public static void copyFile(String fromPath,String fromFileName,String toPath,String tofileName) throws Exception { long st=System.currentTimeMillis(); File f1=new File(fromPath+File.separator+fromFileName); File f2=new File(toPath+File.separator+tofileName); if(!f1.exists()) { System.out.println("源文件不存在!"); return; } if(!f2.exists()) { f2.createNewFile(); } //装饰器 //new BufferedWriter(new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(f2)))); BufferedInputStream br=new BufferedInputStream(new FileInputStream(f1)); BufferedOutputStream bw=new BufferedOutputStream(new FileOutputStream(f2)); //水桶打水的方式 byte[] temp=new byte[256]; //“数据桶”,这个桶的大小视数据大小情况而定 int read=0; while((read=br.read(temp))!=-1) { bw.write(temp,0,read); } bw.flush(); //关闭操作应该放到finally块中,这里简单演示 bw.close(); br.close(); long et=System.currentTimeMillis(); System.out.println("拷贝完成,耗时:"+(et-st)); } }
声明:
1.原创文章,转载请标明并加本文连接。
2.文章反映个人愚见,如有异议欢迎讨论指正
3.更多的内容请看我的 个人博客(测试版)
相关推荐
java基础之IO流,基础简介知识,帮助你了解java的io技术
Java基础之IO讲解
此文档属于本人当初学习java基础之IO流,所整理的文档。里面有字节流与字符流的比较,也有总结使用不同方式读取文档的demo。希望对你的学习有帮助,谢谢!
IO表示输入输出I/O流可以看成对字节或者包装后的字节的读取就是拿出来放进去双路切换,本篇文档讲解了字节的输入和输出
java中的IO流的基础教学,我在里面写了关于IO流最基础的几个类
java零基础自学 之 JavaIO流处理java零基础自学 之 JavaIO流处理
java基础io包,字符流和字节流 PPT
IO 概述 File 类 IO 流分类 InputStream & Reader OutputStream & Writer RandomAccessFile 类 对象的序列化
完整版 Java基础入门教程 Java程序语言设计 04 IO流 输入输出流(共31页).ppt 完整版 Java基础入门教程 Java程序语言设计 05 GUI AWT 事件模型(共27页).ppt 完整版 Java基础入门教程 Java程序语言设计 05 GUI GUI...
大学课程讲义_Java基础_IO
Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。此外,Java也对块传输提供支持,在核心库java.nio中采用的便是块IO。关于NIO我们在后面还有专门的讨论。 流IO的好处是简单...
Java IO基础之读写文本文件
java基础知识 一些实例 可以自学 java基础知识 java基础知识
关于java的IO流基础的练习,适合刚接触IO流,没有基础的同学
此文档是对JAVA 中的 IO 流的整理,其中有大多实用 而平时可以接触到的 IO 基础,对开发工作者有很大的帮助
该文档主要整理了Java IO流的相关信息,主要包括IO流的按照不同维度的分类、节点流、处理流、输入输出流的处理过程、抽象基类的使用等细节内容
传智播客(IO)java基础
java基础——IO流及File-RandomAccessFile对象.docx
586.584.JAVA基础教程_IO流-IO流的体系结构(586).rar
Java基础IO流之File类的使用