`

Java中其它输入输出流

    博客分类:
  • Java
阅读更多
1. ByteArrayInputStream流

以array数组为对象读取。
(char)c 转换成char类型才能打印真正的对象内容。
in.reset();重载流读写的位置。

import java.io.ByteArrayInputStream;
public class ByteArrayInputStreamTest1 {
    public static void main(String[] args) {
        String temp = "abc";
        byte[] b = temp.getBytes();
        ByteArrayInputStream in = new ByteArrayInputStream(b);
        for (int i = 0; i < temp.length(); i++) {
            int c;
            while(-1 != (c = in.read())){
                if (0 == i){
                    System.out.println((char)c);
                } else {
                    System.out.println(Character.toUpperCase((char)c));
                }
            }
        }
        System.out.println();
        in.reset();
    }
}


2. ByteArrayOutputStream流

将array数组的内容输出到文件中。

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class ByteArrayOutputStreamTest1{
    public static void main(String[] args) throws Exception{
        ByteArrayOutputStream f = new ByteArrayOutputStream();
        String str = "hello world welcome";
        byte[] buffer = str.getBytes();
        f.write(buffer);
        byte[] result = f.toByteArray();
        for(int i = 0; i < result.length; i++){
            System.out.println((char)result[i]);
        }
        OutputStream os = new FileOutputStream("test.txt");
        f.writeTo(os);
        f.close();
        os.close();
    }
}


3. DataStream流

DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("data.txt")));
写入的是二进制的文件。
DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream("data.txt")));
读取文件中的类型的内容。(先写什么,先读什么(否则会发生读取数据不正确))

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class DataStream1 {
    public static void main(String[] args) throws Exception {
        DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("data.txt")));
        byte b = 3;
        int i = 12;
        char ch = 'a';
        float f = 3.3f;
        dos.writeByte(b);
        dos.writeInt(i);
        dos.writeChar(ch);
        dos.writeFloat(f);
        dos.close();
        DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream("data.txt")));
        // 读和写的顺序要保持一致
        System.out.println(dis.readByte());
        System.out.println(dis.readInt());
        System.out.println(dis.readChar());
        System.out.println(dis.readFloat());
        dis.close();
    }
}


4. 自定义流

import java.io.IOException;
import java.io.InputStream;
public class MyOwnStream1{
    public static void main(String[] args) throws Exception{
        byte[] b = new byte[16];
        for(int i = 0; i < b.length; i++){
            b[i] = (byte)i;
        }
        MyByteArrayInputStream mbais = new MyByteArrayInputStream(b);
        while(true){
            int c = mbais.read();
            if(c < 0){
                break;
            }
            System.out.print(c + " ");
        }
        System.out.println();
    }
}
class MyByteArrayInputStream extends InputStream{
    protected byte[] data;
    protected int ptr = 0;
    public MyByteArrayInputStream(byte[] b){
        this.data = b;
    }
    @Override
    public int read() throws IOException{
        return (ptr < data.length) ? (data[ptr++]) : -1;
    }
}

read()方法的实现。

import java.io.IOException;
import java.io.InputStream;
public class MyOwnStream2 extends InputStream{
    protected byte[] data;
    protected int ptr = 0;
    protected int mark = 0;
    public MyOwnStream2(byte[] b){
        this.data = b;
    }
    public int read(){
        return (ptr < data.length) ? (data[ptr++]) : -1;
    }
    @Override
    public int available() throws IOException{
        return data.length - ptr;
    }
    @Override
    public void close() throws IOException{
        ptr = data.length;
    }
    @Override
    public synchronized void mark(int readlimit){
        this.mark = readlimit;
    }
    @Override
    public synchronized void reset() throws IOException{
        if(mark < 0 || mark >= data.length){
            throw new IOException("the position is not valid");
        }
        ptr = mark;
    }
    @Override
    public boolean markSupported(){
        return true;
    }
    @Override
    public int read(byte[] b, int off, int len) throws IOException{
        if(this.ptr >= data.length || len < 0){
            return -1;
        }
        if((this.ptr + len) > data.length){
            len = data.length - this.ptr;
        }
        if(len == 0){
            return 0;
        }
        System.arraycopy(data, ptr, b, off, len);
        ptr += len;
        return len;
    }    
}
分享到:
评论

相关推荐

    java 输入输出流

    Java中的输入输出流是Java I/O(Input/Output)系统的核心组成部分,允许程序与外部数据源进行交互。在Java中,所有的I/O操作都基于流的概念,流是数据的序列,可以是字节流或字符流。Java I/O库提供了一系列的类来...

    JAVA输入输出流实验报告

    Java中的输入输出流是程序与外部数据交互的重要方式,它允许我们读取和写入数据到各种来源,如键盘、文件、网络等。在Java中,输入输出流分为两大类:字节流(Byte Stream)和字符流(Character Stream)。本次实验...

    java中的标准输入输出流

    ### Java中的标准输入输出流知识点详解 #### 一、Java标准I/O介绍 Java提供了丰富的I/O处理机制,包括标准输入输出流、字节流、字符流等多种方式来处理数据的读取和写入。标准输入输出流是Java中非常基础且重要的...

    实验9 Java输入输出流.doc

    Java输入输出流是Java编程中一个非常重要的概念,主要用于数据的读取和写入操作,包括文本文件和二进制文件。在实验9中,主要目的是理解和掌握I/O流的分类,以及如何进行文本和二进制文件的读写。 I/O流在Java中被...

    java输入输出流,电子课件

    Java输入输出流是Java编程中不可或缺的部分,它用于应用程序与外部设备之间进行数据交换,比如磁盘、网络、键盘和显示器。I/O流是Java中处理输入和输出的基础框架,它提供了一种抽象的方式来处理不同类型的输入源和...

    Java文件的输入输出流实例详解

    Java 文件的输入输出流实例详解是指在 Java 中对文件的输入输出操作的详细介绍。输入输出流是一个通道,程序可以通过这个通道读取源中的数据或将数据传送到目的地。 概念部分: 输入输出流提供了一条通道,程序...

    Java中的输入输出流研究.pdf

    Java中的输入输出流研究 Java中的输入输出流是一种非常重要的功能,它是程序设计语言的一项基本功能。输入输出流是程序和用户之间、程序与程序之间、程序与网络、数据库之间沟通的桥梁。方便易用的输入和输出使程序...

    java输入输出流

    java输入输出流.ppt,详细介绍java的输入输出流,帮助你快速掌握java

    Java输入输出 Java输入输出

    java java输入输出 java输入流 java输出流 java java输入输出 java输入流 java输出流 java java输入输出 java输入流 java输出流

    java输入输出流与文件处理

    ### Java输入输出流与文件处理 #### 重要概念与基础知识 **输入输出流与文件处理**在编程领域占据着核心地位,特别是在Java中,通过`java.io`包提供了丰富的类和接口来支持输入输出操作。这包括从键盘读取用户输入...

    Java学习资料-输入输出流

    Java 输入/输出流是Java程序进行数据传输的关键机制,它允许程序从源(如键盘、文件)接收数据或将数据发送到目的地(如显示器、文件)。Java中的I/O流分为四类:字节流(Byte Streams)和字符流(Character Streams...

    java的输入输出流

    Java的输入输出流(Input/Output Stream)是Java.io包...总的来说,理解并熟练运用Java的输入输出流是Java开发中不可或缺的一部分,它能帮助我们有效地读取、写入和传输各种类型的数据,从而实现程序与外部世界的交互。

    Java 输入输出流 源码

    Java输入输出流是Java编程语言中的核心概念,用于在程序之间、程序与系统资源之间传输数据。这个主题包括了从磁盘、网络、内存到控制台等不同源和目标的数据读写操作。在这个Java作业中,你将深入理解并实践这一关键...

    java输入输出流的两种写法

    以下是两种常见的Java输入输出流的写法及其详细解释: 1. 字节流: - **FileInputStream** 和 **FileOutputStream**:这是处理文件输入输出的基本字节流类。`FileInputStream` 用于从文件读取字节,而 `...

    java输入输出流学生成绩管理

    对于"java输入输出流学生成绩管理"这个项目,我们可以推断它是一个使用Java I/O流实现的学生分数管理系统。下面我们将详细探讨Java I/O流的概念、在成绩管理中的应用以及可能的实现方式。 Java I/O流分为四大类:...

    java输入输出流的简单例子

    这个简单的例子展示了Java输入输出流的基本用法,实际应用中,我们可以根据需求选择不同的流类型和操作方式,例如处理网络数据传输、内存缓冲、压缩解压等复杂场景。理解并熟练掌握Java的输入输出流,对于进行任何...

    Java实验6 输入输出流与文件操作.doc

    Java 中的输入输出流(Input/Output Stream)是一种基本的IO机制,用于在程序中进行数据的输入和输出。文件操作是Java编程中常用的技术之一,用于读写文件、存储数据和实现数据的持久化。下面将对Java中的输入输出流...

    JAVa输入输出流程序

    Java输入输出流(IO流)是Java编程语言中处理数据传输的核心部分,它允许程序进行数据的读取和写入操作。在Java中,一切皆为流,输入流用于读取数据,而输出流用于写入数据。这些流可以处理各种类型的数据,包括文本...

    Java输入输出流以及线程讲解

    Java输入输出流(I/O流)是Java编程中不可或缺的一部分,它允许程序处理数据的读取、写入和传输。Java I/O系统基于流的概念,流可以被视为数据的有序序列,既可以是从源(如文件、网络连接)读取数据的输入流,也...

Global site tag (gtag.js) - Google Analytics