content:
1.流的基本概念
2.输入和输出
3.InputStream/OutputStream/Reader/Writer
4.对象序列化
5.源代码
一、流的基本概念:
1. IO流可以理解为JAVA用来传递数据的管道, 创建一个IO,就相当于将管道与某个数据源连接到一起了.
2.关系描述图:
二、输入和输出
1.输入是从数据源(文件、内存、网络等)读取数据。如:
InputStream – 一个字节一个字节(byte)地从数据源读取
Reader – 一个字符一个字符(char)地从数据源读取
2.输出是往某个目标数据源中写入数据。如:
OutputStream – 一个字节一个字节地往数据源写入
Writer – 一个字符一个字符地往数据源写入
三、InputStream/OutputStream
1.InputStream
//读取一个字节并以整数的形式返回(0~255),
//如果返回-1已到输入流的末尾。
int read() throws IOException
//读取一系列字节并存储到一个数组buffer,
//返回实际读取的字节数,如果读取前已到输入流的末尾返回-1
int read(byte[] buffer) throws IOException
//读取length个字节
//并存储到一个字节数组buffer,从off位置开始存,最多len
//返回实际读取的字节数,如果读取前以到输入流的末尾返回-1
int read(byte[] buffer, int off, int len) throws IOException
//关闭流释放内存资源
void close() throws IOException
2.OutputStream
//向输出流中写入一个字节数据,该字节数据为参数b的低8位
void write(int b) throws IOException
//将一个字节类型的数组中的数据写入输出流
void write(byte[] b) throws IOException
//将一个字节类型的数组中的从指定位置(off)开始的
//len个字节写入到输出流
void write(byte[] b, int off, int len) throws IOException
//关闭流释放内存资源
void close() throws IOException
//将输出流中缓冲的数据全部写出到目的地
void flush() throws IOException
3.Reader
//读取一个字符并以整数的形式返回(0~255),
//如果返回-1已到输入流的末尾。
int read() throws IOException
//读取一系列字符并存储到一个数组buffer,
//返回实际读取的字符数,如果读取前已到输入流的末尾返回-1
int read(char[] cbuf) throws IOException
//读取length个字符
//并存储到一个数组buffer,从off位置开始存,最多读取len
//返回实际读取的字符数,如果读取前以到输入流的末尾返回-1
int read(char[] cbuf, int off, int len) throws IOException
//关闭流释放内存资源
void close() throws IOException
4.Writer
//向输出流中写入一个字符数据,该字节数据为参数b的低16位
void write(int c) throws IOException
//将一个字符类型的数组中的数据写入输出流,
void write(char[] cbuf) throws IOException
//将一个字符类型的数组中的从指定位置(offset)开始的
//length个字符写入到输出流
void write(char[] cbuf, int offset, int length) throws IOException
//将一个字符串中的字符写入到输出流
void write(String string) throws IOException
//将一个字符串从offset开始的length个字符写入到输出流
void write(String string, int offset, int length) throws IOException
//关闭流释放内存资源
void close() throws IOException
//将输出流中缓冲的数据全部写出到目的地
void flush() throws IOException
四、常见的原始流类。如:
FileInputStream/FileOutputStream – 把文件当数据源
ByteArrayInputStream/ByteArrayOutputStream - 把byte[]当数据源
StringReader/StringWriter – 把String当数据源
CharArrayReader/CharArrayWriter – 把char[]当数据源
FileReader/FileWriter – 把文件当数据源的Reader/Writer
InputStreamReader/OutputStreamWriter – 把InputStream/OutputStream当成数据源的Reader/Writer
其中FileInputStream/FileOutputStream--一般用于操作二进制文件
FileReader/FileWriter 一般用于操作文本文件
五、对象序列化
1.要对一个对象实现序列化,此对象应需实现serializable或Externalizable接口。其中实现Serializable接口最常见。
2.除了一个对象要时间Serializable接口外,类内部的所有属性也必须得是可序列化的(即实现了Serializable接口)。所有的基本数据类型,及常见的其它数据类型(比如:String、Date、List、Map等等)都是可序列化的!
六、常见程序源代码:
1.如何拷贝一个文件:
public static void main(String[] args){ try { String source = "D:/word.txt"; String dest = "D:/user.txt"; //指定数据源(文件路径),创建FileInputStream FileInputStream fis = new FileInputStream(source); //指定数据源(文件路径),创建FileOutputStream FileOutputStream fos = new FileOutputStream(dest); //定义一个内存缓冲区,以便接收从InputStream读出来的数据 byte[] cache = new byte[1024]; //定义一个临时变量len,用来存放每次具体读取了多少个字节 int len = 0; //从InputStream读取数据,放到内存缓冲区,read(byte[])方法 //的返回值就是实际读取的字节数,如果已经到了文件的结束,返回-1 while((len = fis.read(cache)) != -1){ //将内存缓冲区中的数据写入目标FileOutputStream //将实际读取的字节数写入,所以需要后面两个参数 fos.write(cache, 0, len); } fis.close(); fos.flush(); fos.close(); } catch (Exception e) { e.printStackTrace(); }
2.使用缓冲区读取文件
public static void main(String[] args) throws Exception{ String source = "d:\word.txt"; //使用缓冲,提高文件的读写性能! BufferedReader reader = new BufferedReader( new FileReader(source) ); //我们将文件的内容存放在一个StringBuffer中 StringBuffer sb = new StringBuffer(); //文本文件也是一段一段读取的,定义一个临时缓冲区 char[] chars = new char[1024]; int len = 0; while((len = reader.read(chars)) != -1){ sb.append(chars,0,len); } //关闭输入流,释放资源 reader.close(); System.out.println(sb.toString()); }
3.java序列化
public class Persistence { private static Map variables = null; private static String file = System.getProperty("java.io.dir") + "/temp.object"; static{ try{ if(new File(file).exists()){ FileInputStream in = new FileInputStream(file); ObjectInputStream s = new ObjectInputStream(in); variables = (Map)s.readObject(); s.close(); } if(variables == null){ variables = new HashMap(); } }catch(Exception e){ e.printStackTrace(); } } //输出一个变量的值 public static void setVariable(String name,Serializable object){ if(variables != null){ variables.put(name, object); } try { FileOutputStream fos = new FileOutputStream(tmpfile); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(variables); oos.flush(); oos.close(); } catch (Exception e) { e.printStackTrace(); } } //获取一个变量的值 public static Serializable getVariable(String name){ if(variables != null){ return (Serializable)variables.get(name); } return null; } }
相关推荐
C++ I/O流课件C++ I/O流课件 很不错的哦
实验七 C++的I/O流(验证性)实验报告 doc 格式
这个都是我学习的时候写的关于I/O流的读写操作。可以直接那来用的,里面都注明过。很好看懂的。很不错哦
JAVA文件I/O流上传类 MyFileSeparate 文件上传
java I/O流处理的ppt,详细描述了I/O的各个流,对学习很有帮助!
适合初学者学习使用的流案例,绝对使用。
Java I/O 流代码实例大全(01~09) File、FileInputStream、FileOutputStream、FileReader、FileWriter、BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter
读取写入文件,javai/o流字符流 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
使用Java编写的一个可使用I/O读写文件的通讯录,具体可实现添加联系人、删除联系人、修改联系人、查看联系人等,无前端页面控制台输入输出 学习JavaI/O流的可下载学习
c++ I/O流的常用控制符 C++常用特殊字符 便于查找 很方便的小文档
I/O流与文件入门学习实验案例,了解文件对象和流类的使用过程。
这个是我基于I/O流设计的图书馆管理系统项目总结,是有篇文章的,如果实在不会整再来下载这个完整的。文章:https://blog.csdn.net/GB__LaoWang/article/details/115914058
C++高级程序设计实验十二模板类的构造& C++的I/O流类库 1.理解和应用类模板和函数模板; 2.理解C++输入输出流类库; 3.掌握ios类中用于控制输入输出成员函数的使用; 4.掌握操纵符格式控制的使用; 5.掌握用户...
这是一篇关于javaSe的基础班关于IO流的全套总结,希望能对你的基础学习有所帮助。
io数据定义,开发.......................
主要介绍了Java使用I/O流读取文件内容的方法,结合实例形式详细分析了java使用I/O流读取文件常见操作技巧,需要的朋友可以参考下
描述java的I/o系统,描述了java中文件系统的处理,数据流的处理
I/O基本编程(教你怎么使用I/O输入流和输出流)
Java I/O字符流复制文档,字节流复制歌曲等 自己定义
Java中的I/O学习总结Java中的I/O学习总结