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流进行详细的介绍和实验。 一、实验目的和要求 1. 掌握 C++标准流...
I/O流读写文件 I/O流是Java编程语言中的一种基本概念,用于处理输入输出数据的功能。在Java中,I/O流是通过流的概念来实现的,流是一种抽象表示,用于表示输入设备或输出设备。根据不同的功能,I/O流可以分为输入流...
C++中的I/O流是程序与外部世界交互的重要机制,主要涉及输入操作(读操作)和输出操作(写操作)。I/O流的概念来源于数据流,它就像一条河流,允许数据从一个源头流向另一个目的地。在C++中,数据流是以字节序列的...
Java中的I/O流是程序与外部数据交互的重要机制,它允许数据在程序、文件、网络等之间流动。I/O流分为两大类:字符流(Character Stream)和字节流(Byte Stream),每类又分为输入流(Input Stream)和输出流...
Java中的I/O流处理是程序与外部设备交互数据的关键机制,包括从文件、网络、内存等数据源读取数据和向这些目标写入数据。I/O流系统在Java的`java.io`包中被实现,提供了丰富的类和接口来支持各种类型的流操作。 **I...
JAVA文件I/O流上传类 MyFileSeparate 文件上传
Java I/O流通讯录是一个基于Java编程语言设计的实用程序,它主要用于演示和学习Java的I/O流操作。在这个项目中,开发者通过I/O流实现了对文件的读写功能,从而构建了一个简单的通讯录系统。这个系统允许用户进行添加...
在Java编程语言中,I/O流(Input/Output Stream)是处理数据输入和输出的核心机制。本课程设计报告书——“Java课程设计报告书-学生版-1_I/O流与文件课程设计_”旨在帮助学生深入理解并掌握如何在Java中进行文件操作...
I/O流提供了读取和写入数据的机制,使得程序能够处理各种类型的输入和输出。在给定的代码片段中,我们看到一个简单的例子,它使用了字符输入流来读取用户输入的10个字符。下面将详细介绍这个示例中的关键知识点: 1...
Java I/O 流代码实例大全(01~09) File、FileInputStream、FileOutputStream、FileReader、FileWriter、BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter
C++ I/O流的常用控制符和特殊字符 C++ 中的 I/O 流是一个非常重要的概念,它使得程序员可以方便地输入和输出数据。在 C++ 中,I/O 流主要通过流类(stream)来实现,包括输入流(input stream)和输出流(output ...
I/O流系统交互流程图
读取写入文件,javai/o流字符流 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
例如,对于高并发、低延迟的服务,可能更倾向于使用I/O多路复用和非阻塞I/O,而对性能有较高要求且数据流相对集中的情况,I/O聚集则更有优势。同时,正确管理和调度文件描述符,确保资源的有效利用,也是提升系统...
Java I/O流是Java编程语言中的一个重要组成部分,用于在程序和外部资源(如磁盘、网络、内存等)之间传输数据。本教程涵盖了从基础到高级的Java流知识,包括文件读写、缓冲流、对象序列化等多个方面。 1. **文件的...
I/O流系统提供了一种标准化的方式来读取、写入数据,无论是从磁盘、网络、内存还是其他类型的输入输出设备。在这个思维导图中,我们将深入探讨Java I/O流的各个方面。 首先,Java I/O流分为两大类:字符流和字节流...
java实验 5.doc I/O流
Java使用I/O流读取文件内容的方法详解 Java使用I/O流读取文件内容的方法是Java编程中常用的文件读取方式。该方法可以将文件内容读取到程序中,并对其进行处理和分析。在Java中,I/O流是指数据流向某个对象的数据...
这个是我基于I/O流设计的图书馆管理系统项目总结,是有篇文章的,如果实在不会整再来下载这个完整的。文章:https://blog.csdn.net/GB__LaoWang/article/details/115914058