`
hesihua
  • 浏览: 234097 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

java的I/O

    博客分类:
  • java
 
阅读更多

/*
 * 简单的读/写文本文件的示例
 * 这里包含了三个例子,即
 * 1. 将文件读入到内存(这里是StringBuffer)的例子
 * 2. 将内容中的文本写到文件
 * 3. 将一个文件的内容读出来写入另一个文件中
 *    同时也展示了如果从输入流中读出来内容写入输出流中(仅限文本流)
 * 三个例子可以独立存在,所以根据需要只看其中一个就行了。
 */

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.io.PrintWriter;

public final class AccessTextFile {

    /**
     * 1. 演示将流中的文本读入一个 StringBuffer 中
     * @throws IOException
     */
    public void readToBuffer(StringBuffer buffer, InputStream is)
        throws IOException {
        String line;        // 用来保存每行读取的内容
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        line = reader.readLine();       // 读取第一行
        while (line != null) {          // 如果 line 为空说明读完了
            buffer.append(line);        // 将读到的内容添加到 buffer 中
            buffer.append("\n");        // 添加换行符
            line = reader.readLine();   // 读取下一行
        }
    }

    /**
     * 2. 演示将 StringBuffer 中的内容读出到流中
     */
    public void writeFromBuffer(StringBuffer buffer, OutputStream os) {
        // 用 PrintStream 可以方便的把内容输出到输出流中
        // 其对象的用法和 System.out 一样
        // (System.out 本身就是 PrintStream 对象)
        PrintStream ps = new PrintStream(os);  
        ps.print(buffer.toString());
    }

    /**
     * 3*. 从输入流中拷贝内容到输入流中
     * @throws IOException
     */
    public void copyStream(InputStream is, OutputStream os) throws IOException {
        // 这个读过过程可以参阅 readToBuffer 中的注释
        String line;
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        PrintWriter writer = new PrintWriter(new OutputStreamWriter(os));
        line = reader.readLine();
        while (line != null) {
            writer.println(line);
            line = reader.readLine();
        }
        writer.flush();     // 最后确定要把输出流中的东西都写出去了
                            // 这里不关闭 writer 是因为 os 是从外面传进来的
                            // 既然不是从这里打开的,也就不从这里关闭
                            // 如果关闭的 writer,封装在里面的 os 也就被关了
    }

    /**
     * 3. 调用 copyStream(InputStream, OutputStream) 方法拷贝文本文件
     */
    public void copyTextFile(String inFilename, String outFilename)
        throws IOException {
        // 先根据输入/输出文件生成相应的输入/输出流
        InputStream is = new FileInputStream(inFilename);
        OutputStream os = new FileOutputStream(outFilename);
        copyStream(is, os);     // 用 copyStream 拷贝内容
        is.close(); // is 是在这里打开的,所以需要关闭
        os.close(); // os 是在这里打开的,所以需要关闭
    }

    public static void main(String[] args) throws IOException {
        int sw = 1;     // 三种测试的选择开关
        AccessTextFile test = new AccessTextFile();
       
        switch (sw) {
        case 1: // 测试读
        {
            InputStream is = new FileInputStream("E:\\test.txt");
            StringBuffer buffer = new StringBuffer();
            test.readToBuffer(buffer, is);
            System.out.println(buffer);     // 将读到 buffer 中的内容写出来
            is.close();
            break;
        }
        case 2: // 测试写
        {
            StringBuffer buffer = new StringBuffer("Only a test\n");
            test.writeFromBuffer(buffer, System.out);
            break;
        }
        case 3: // 测试拷贝
        {
            test.copyTextFile("E:\\test.txt", "E:\\r.txt");
        }
            break;
        }
    }

}

分享到:
评论

相关推荐

    Java I/O, 2nd Edition

    《Java I/O, 2nd Edition》是一本深入探讨Java输入/输出系统的重要书籍,针对Java平台的I/O系统提供了全面且深入的指南。这本书在第二版中对Java I/O进行了更新,涵盖了从Java 5到Java 8的最新发展,包括NIO.2(New ...

    java I/O内容

    这是一个关于Java I/O的知识点总结,希望大家共同学习,共同进步

    java I/O类的使用

    Java I/O类库是Java平台的核心部分,它提供了丰富的类用于处理输入和输出操作。这个系统包括了多种类,从简单的字节流到复杂的字符流,以及一系列的装饰器类,用于扩展和增强原始流的功能。 Java 1.0 和 1.1 中的I/...

    Java I/O, NIO and NIO.2

    Java I/O, NIO, 和 NIO.2 是Java平台中处理输入/输出操作的核心组件,对于任何Java开发者来说,理解和掌握这些概念至关重要。本文将深入探讨这些技术,旨在提供一个全面而详尽的概述。 Java I/O(Input/Output)是...

    Java I/O编程 java

    Java I/O 编程是Java开发中的重要组成部分,主要用于处理数据的输入与输出。下面将详细阐述其中的关键概念和方法。 1. 数据流的概念及输入输出方法: 数据流是计算机中进行数据传输的通道,包括从外部设备到程序的...

    Java I/O 过滤流-带格式的读写操作

    在Java编程语言中,输入/输出(I/O)是处理数据传输的核心部分。过滤流(Filter Stream)是Java I/O框架中的一个重要概念,它提供了一种优雅的方式来进行数据的读写操作,同时允许我们添加额外的功能,如字符编码...

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

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

    Java I/O 第二版

    OReilly.Java.I.O.2nd.Edition.May.2006 Java的io包主要包括: 1. 两种流:字节流(byte Stream)和字符流(character stream),这两种流不存在所谓的谁代替谁、谁比谁高级之说,它们互为补充,只是侧重点不同...

    深入分析 Java I/O 的工作机制(转载)

    Java I/O(输入/输出)系统是Java编程语言中用于处理数据流的重要组成部分,它允许程序与外部资源如文件、网络、硬件设备等进行交互。深入理解Java I/O的工作机制对于开发高效、可靠的系统至关重要。以下是对Java I/...

    Java I/O系统

    Java I/O系统是Java编程语言中的一个重要组成部分,它允许程序进行输入输出操作,与外部世界进行数据交互。在Java中,I/O系统基于流的概念,流可以被视为数据的流动渠道,既可以用来读取数据(输入流),也可以写入...

    Java 新I/O

    Java 新I/O,也称为NIO(New Input/Output),是Java平台中对传统I/O模型的一种改进。在Java 1.4版本中引入的NIO库为开发人员提供了更高效、非阻塞的数据处理方式,特别适用于高并发、低延迟的系统。NIO的核心在于...

    Java I/O层次结构详解

    Java I/O层次结构详解 Java I/O系统是Java平台中不可或缺的一部分,它为开发者提供了处理输入和输出的强大工具。在Java中,I/O操作主要基于流(Stream)的概念,流可以被视为数据的有序序列,既可以代表从源读取...

    Java I/O流通讯录

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

    Java I/O学习笔记: 磁盘操作 字节操作 字符操作 对象操作 网络操作 NIO & AIO Java I/O

    Java I/O学习笔记: 磁盘操作 字节操作 字符操作 对象操作 网络操作 NIO & AIO Java I/O Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,意味着可以在不同的操作系统上运行...

    Java I/O总结

    ### Java I/O总结 #### 一、从`new BufferedReader(new InputStreamReader(conn.getInputStream()))`想到的 在Java编程中,处理输入输出(I/O)是一项常见的任务。这段代码`new BufferedReader(new ...

    java i/0习题

    Java I/O(输入/输出)是Java编程语言中不可或缺的一部分,它允许程序与外部资源进行数据交换,如文件、网络连接、系统硬件等。在Java I/O中,我们使用流(Stream)的概念来处理数据,流是数据传输的通道。本套习题...

    java I/o 详细介绍课件

    java I/o java I/o 详细介绍课件

    Java I/O文件读写/删除/复制等

    Java I/O 文件操作是Java编程中的重要组成部分,它允许开发者处理输入和输出,涉及文件的创建、读取、写入、删除以及复制等任务。在Java中,这些操作主要是通过java.io包提供的类来实现的。下面将详细介绍这些知识点...

    Java I/O 使用和最佳实践

    Java I/O系统是Java编程语言中的一个核心组成部分,它提供了处理输入输出操作的类和接口。这个系统的设计目的是为了使得应用程序能够与外部世界交互,包括读取和写入文件、网络数据、标准输入输出流等。在Java中,I/...

    MaglevIO,一个易于使用和高效的Java I/O库。基于Java NATEVEIO。.zip

    MaglevIO是一个专注于提供易用性和高性能的Java I/O库,其设计灵感来源于Java的非阻塞I/O(Non-blocking I/O,NIO)框架。NIO是Java平台中一个重要的部分,它允许程序在处理大量并发连接时显著提高效率,尤其是在...

Global site tag (gtag.js) - Google Analytics