`
eddiegift
  • 浏览: 27713 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

JAVA中的几种I/O流

    博客分类:
  • J2SE
阅读更多
    private static String path; //文件的绝对路径
    private static String name; //文件名
    private static String extension; //文件扩展名
    private static StringBuffer txt = null; //读取的文本信息
    private static int len; //从输入流中一次读取的长度
    private static Vector vector = null; //保存输入流对象

    private static FileInputStream input = null; //文件输入流
    private static BufferedReader reader = null; //缓存文本输入流
    private static BufferedWriter writer  = null; //缓存文本输出流
    private static SequenceInputStream sequenceInput = null; //合并输入流
    private static DataInputStream dataInput = null; //二进制数据输入流
    private static PipedInputStream pipedInput = null; //二进制管道数据输入流
    private static PipedOutputStream pipedOut = null;  //二进制管道数据输出流

     /**
     * 初始化变量
     */
    static {
         try {
            path = "";
            name = "";
            txt = new StringBuffer();
            vector = new Vector();
            pipedInput = new PipedInputStream();
            pipedOut = new PipedOutputStream(pipedInput);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

一.文件输入流
            path = fileChooser.getSelectedFile().getAbsolutePath();
            input = new FileInputStream(new File(path));
            byte[] bits = new byte[1024];
            len = input.read(bits);
            while (len != -1) {
                txt.append(bits.toString());
                len = input.read(bits);
            }
            input.close();

二.缓存文本输入流
            reader = new BufferedReader(new FileReader(new File(path)));
            String text = reader.readLine();
            while (text != null) {
                txt.append(text).append("\n");
                text = reader.readLine();
            }
            reader.close();

三.合并输入流
            for (.....) {
                path = fileChooser.getSelectedFiles()[i].getAbsolutePath();
                input = new FileInputStream(new File(path));
                vector.add(input);
             }
            sequenceInput = new SequenceInputStream(vector.elements());
            byte[] bits = new byte[1024];
            len = sequenceInput.read(bits);
            while (len != -1) {
                txt.append(bits.toString());
                len = sequenceInput.read(bits);
            }
            sequenceInput.close();

四.二进制数据输入流
            dataInput = new DataInputStream(new FileInputStream(new File(path)));
            byte[] bits = new byte[1024];
            len = dataInput.read(bits);
            while (len != -1) {
                txt.append(bits.toString());
                len = dataInput.read(bits);
            }
            dataInput.close();

五.二进制管道数据输入流
            PipedInputStream 和 PipedOutputStream 在两个线程之间传递信息
            Thread thread1= new Thread1();
            Thread thread2= new Thread2();
            thread1.start();
            thread2.start();
 

//线程1负责接受线程2发送的消息
class Thread1 extends Thread {
    private IO io;

    public thread1() throws Exception{
        io = new IO();
    }

    public void run() {
        try {
            io.input();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

// 线程2负责向线程1发送消息
class Thread2 extends Thread {
    private IO io;

    public thread2() throws Exception {
        io = new IO();
    }

    public void run(){
        try {
            io.out();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

//类IO有发送和接受消息的的方法
class IO {
    public static int flag;
    private byte[] bits = new byte[1024];
    private int len;

    public synchronized void input() throws Exception {
        pipedInput = ExeMethod.input();
        len = pipedInput.read(bits);

        while (len == -1) {
            this.wait();
        }

        while (len != -1) {
            System.out.println("Input context:" + bits.toString());
            len = pipedInput.read(bits);
        }
        System.out.println("receive sucess");
        pipedInput.close();
    }

    public synchronized void out() throws Exception {
        pipedOut = ExeMethod.out();
        pipedOut.write(1);
        pipedOut.flush();
        pipedOut.close();
    }
}
1
3
分享到:
评论

相关推荐

    利用JDK7的NIO2.0进行I/O读写和监视

    在Java编程领域,JDK 7引入了一个重要的更新——NIO2.0,也被称为“New I/O 2.0”或“AIO”(Asynchronous I/O)。这个更新极大地提升了Java处理I/O操作的能力,特别是在文件系统交互和网络通信方面。NIO2.0主要增加...

    Java非阻塞I_O在乡村可视化远程医疗系统中的应用.pdf

    在乡村可视化远程医疗系统中,使用 Java 非阻塞 I/O 可以实现以下几个方面的功能: 1. 高效的网络通信:Java 非阻塞 I/O 可以实现高效的网络通信,减少系统的开销,提高系统的性能。 2. 并行处理:Java 非阻塞 I/O ...

    Java IO流几种经典使用方式

    ### Java IO流几种经典使用方式 #### 一、输入输出流(Input/Output Stream) 在Java中,`java.io`包提供了处理输入/输出操作的基本类,主要包括`InputStream`和`OutputStream`。 ##### 1. 字节流(Byte Stream) **...

    java语言的高级特性

    Java中的输入/输出流(简称I/O流)是一种用于处理数据输入和输出的技术手段。它将数据的发送者和接收者之间的交互抽象成“流”,从而简化了编程过程,并提高了代码的灵活性和复用性。 #### 输入/输出流的重要性 ...

    Java输入输出流Java输入输出流.doc

    在示例代码中,展示了Java I/O流的几个常见应用场景: 1. 使用BufferedReader从键盘读取一行数据。BufferedReader提供了一种高效读取字符流的方式,它有一个内部缓冲区,减少了对物理设备的访问次数。 2. 使用...

    java io流-3.pdf

    - **I/O流的概念**:Java中的所有输入/输出(I/O)设施都基于流,它提供了一种简单的方式来读取和写入不同类型的文件数据。 - **四类主要流**:Java I/O系统主要包括四大类流,每一种都有其特定的功能和用途。 - **...

    java中的数据流.zip_Data Flow java

    数据流在Java中主要涉及I/O(输入/输出)操作,它允许程序读取或写入数据,例如从文件、网络连接或者标准输入输出设备。本资料集合主要探讨了Java中的数据流相关知识,包括但不限于以下几个方面: 1. **Java I/O 流...

    Java-Junit单元测试无法使用scanner输入和I-O流的解决方案.docx

    ### Java-Junit单元测试无法使用scanner输入和I-O流的解决方案 #### 一、单元测试的概念及重要性 单元测试是一种软件开发中的测试方法,它主要用于验证软件中的最小可测试单元或组件是否按预期工作。在Java编程...

    Java IO, NIO and NIO.2

    以上介绍了Java中的三种I/O机制。在实际开发中,它们各有适用场景。例如,Java IO适合进行传统的I/O操作,特别是当程序需要同时处理大量数据时;Java NIO则适合于需要高吞吐量的应用,以及对I/O事件响应式编程的场合...

    JavaNIO.pdf

    Java NIO(New I/O,非阻塞I/O)是Java提供的一种用于替代标准Java I/O API的I/O操作方式,用于提高网络和文件I/O性能。NIO引入了新的抽象组件,包括Buffer、Channels和Selectors等,具有面向缓冲区、基于通道、选择...

    Java基础篇:IO流.pdf

    Java I/O流的抽象基类主要包括几个顶层接口,如InputStream、OutputStream、Reader和Writer。这些抽象基类定义了各种流的基本操作,如read()、write()和close()等方法。 在Java I/O中,File类扮演了非常重要的角色...

    java学习笔记(java 反射机制 流 内存管理)

    本笔记主要涵盖了四个核心知识点:Java反射机制、流(I/O流)、内存管理和Java学习的基础。以下是对这些主题的详细阐述: 一、Java反射机制 Java反射机制是Java语言的一个强大特性,允许程序在运行时检查类、接口、...

    Scalable IO in Java -Doug Lea.rar

    在《可扩展的Java I/O》中,可能会讨论以下几个关键知识点: 1. **非阻塞I/O**:Java NIO(New IO)库,自Java 1.4引入,提供了非阻塞I/O操作的能力,使得单个线程可以处理多个输入/输出流,从而提高了系统资源的...

    java第十三章Java 输入输出流.rar

    Java输入输出流(I/O流)是Java编程中不可或缺的一部分,它允许程序处理数据的读取和写入操作。在Java中,一切皆为对象,所以输入和输出操作也被抽象成了一系列的类,这些类构成了Java I/O系统的核心。本章主要涵盖...

Global site tag (gtag.js) - Google Analytics