`
阅读更多

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流是计算机编程中一个非常重要的概念,它涉及到输入/输出操作的各种方式和方法。在本实验报告中,我们将对C++的I/O流进行详细的介绍和实验。 一、实验目的和要求 1. 掌握 C++标准流...

    关于I/O流读写文件

    I/O流读写文件 I/O流是Java编程语言中的一种基本概念,用于处理输入输出数据的功能。在Java中,I/O流是通过流的概念来实现的,流是一种抽象表示,用于表示输入设备或输出设备。根据不同的功能,I/O流可以分为输入流...

    C++ I/O流课件 很不错的哦

    C++中的I/O流是程序与外部世界交互的重要机制,主要涉及输入操作(读操作)和输出操作(写操作)。I/O流的概念来源于数据流,它就像一条河流,允许数据从一个源头流向另一个目的地。在C++中,数据流是以字节序列的...

    java基础之I/O流

    Java中的I/O流是程序与外部数据交互的重要机制,它允许数据在程序、文件、网络等之间流动。I/O流分为两大类:字符流(Character Stream)和字节流(Byte Stream),每类又分为输入流(Input Stream)和输出流...

    java对I/O流的处理

    Java中的I/O流处理是程序与外部设备交互数据的关键机制,包括从文件、网络、内存等数据源读取数据和向这些目标写入数据。I/O流系统在Java的`java.io`包中被实现,提供了丰富的类和接口来支持各种类型的流操作。 **I...

    JAVA文件I/O流上传类

    JAVA文件I/O流上传类 MyFileSeparate 文件上传

    Java I/O流通讯录

    Java I/O流通讯录是一个基于Java编程语言设计的实用程序,它主要用于演示和学习Java的I/O流操作。在这个项目中,开发者通过I/O流实现了对文件的读写功能,从而构建了一个简单的通讯录系统。这个系统允许用户进行添加...

    Java课程设计报告书-学生版-1_I/O流与文件课程设计_

    在Java编程语言中,I/O流(Input/Output Stream)是处理数据输入和输出的核心机制。本课程设计报告书——“Java课程设计报告书-学生版-1_I/O流与文件课程设计_”旨在帮助学生深入理解并掌握如何在Java中进行文件操作...

    I/O流相关知识

    I/O流提供了读取和写入数据的机制,使得程序能够处理各种类型的输入和输出。在给定的代码片段中,我们看到一个简单的例子,它使用了字符输入流来读取用户输入的10个字符。下面将详细介绍这个示例中的关键知识点: 1...

    Java I/O 流代码实例大全(01~09)

    Java I/O 流代码实例大全(01~09) File、FileInputStream、FileOutputStream、FileReader、FileWriter、BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter

    c++ I/O流的常用控制符 C++常用特殊字符

    C++ I/O流的常用控制符和特殊字符 C++ 中的 I/O 流是一个非常重要的概念,它使得程序员可以方便地输入和输出数据。在 C++ 中,I/O 流主要通过流类(stream)来实现,包括输入流(input stream)和输出流(output ...

    java i/o流读取写入字符流

    读取写入文件,javai/o流字符流 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

    unix平台下I/O聚集和分离的一种方案

    例如,对于高并发、低延迟的服务,可能更倾向于使用I/O多路复用和非阻塞I/O,而对性能有较高要求且数据流相对集中的情况,I/O聚集则更有优势。同时,正确管理和调度文件描述符,确保资源的有效利用,也是提升系统...

    java_I/O流的教程

    Java I/O流是Java编程语言中的一个重要组成部分,用于在程序和外部资源(如磁盘、网络、内存等)之间传输数据。本教程涵盖了从基础到高级的Java流知识,包括文件读写、缓冲流、对象序列化等多个方面。 1. **文件的...

    Javaio流思维导图

    I/O流系统提供了一种标准化的方式来读取、写入数据,无论是从磁盘、网络、内存还是其他类型的输入输出设备。在这个思维导图中,我们将深入探讨Java I/O流的各个方面。 首先,Java I/O流分为两大类:字符流和字节流...

    java实验 5.doc I/O流

    java实验 5.doc I/O流

    Java使用I/O流读取文件内容的方法详解

    Java使用I/O流读取文件内容的方法详解 Java使用I/O流读取文件内容的方法是Java编程中常用的文件读取方式。该方法可以将文件内容读取到程序中,并对其进行处理和分析。在Java中,I/O流是指数据流向某个对象的数据...

    基于I/O流设计的图书馆管理系统

    这个是我基于I/O流设计的图书馆管理系统项目总结,是有篇文章的,如果实在不会整再来下载这个完整的。文章:https://blog.csdn.net/GB__LaoWang/article/details/115914058

    怎么使用I/O编程???

    I/O的核心思想是通过流(Stream)来传输数据,使得程序能从数据源读取数据或将数据写入目标。 **1.1 I/O简介** I/O操作的输入和输出是相对于当前运行的程序而言的。"读"是指从外部获取数据,如文件内容;"写"是指将...

Global site tag (gtag.js) - Google Analytics