Java输入/输出流体系

在用java的io流读写文件时,总是被它的各种流能得很混乱,有40多个类,理清啦,过一段时间又混乱啦,决定整理一下!以防再忘

Java输入/输出流体系

1.字节流和字符流

字节流:按字节读取。字符流:按字符读取。

字符流读取方便,字节流功能强大,当不能用字符流时,可以用字节流。

字节流基类:InputStream、OutputStream

InputStream方法:

OutputStream方法:

字符流基类:Reader、Writer

Reader方法:

Writer方法:

2.输入输出流体系

3.转换流

InputStreamReader:字节输入流->字符输入流的转换

OutputStreamWriter:字节输出流->字符输出流的转换

例如:字节输入流->字符输入流的转换

字节流使用不方便,而普通的Reader读取也不太方便,转换成BufferReader,利用BufferReader的readLine(),一次读取一行。

BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                String result = "";
                String line = "";
               while((line = reader.readLine())!= null){
                   result = result+ line;
               }
               System.out.println(result);

InputStream to String:

private static String changeInputeStream(InputStream inputStream,String encode) {
       //通常叫做内存流,写在内存中的
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        byte[] data = new byte[1024];
        int len = 0;
        String result = "";
        if(inputStream != null){
            try {
                while((len = inputStream.read(data))!=-1){
                    outputStream.write(data, 0, len);
                }
                //result是在服务器端设置的doPost函数中的
                result = new String(outputStream.toByteArray(),encode);
                outputStream.flush();
                outputStream.close();
                inputStream.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return result;
    }

InputStream->StringBuffer:

StringBuffer buffer = new StringBuffer();
        InputStreamReader reader =new InputStreamReader(request.getInputStream(),"utf-8");
        char[] requestchar = new char[5];
        if(reader != null){
            System.out.println("默认编码:"+reader.getEncoding());//默认编码:UTF8
        }
        //buffer reader.readLine()
        while((temp = reader.read(requestchar))!=-1){
            buffer.append(requestchar, 0, temp);
            System.out.println(buffer.toString());
        }
        String result = buffer.toString();

4.文件读写:

class Kaoshi
{public static void main(String[] args){
  Scanner in=new Scanner(System.in);
  int score=0;                            //分数;
  StringBuffer answer=new StringBuffer();//存放用户答案,动态字符串;
  String result="ACDD";                  //正确答案;
try{
  FileReader file=new FileReader("Test.txt");     //打开文件;
  BufferedReader intw=new BufferedReader(file);   //缓冲流,按行读;
  String s=null;
  while((s=intw.readLine())!=null){              //判断不为空;
    if(!s.startsWith("*")){
      System.out.println(s);
    }
    else{
        System.out.println("请输入正确答案:");
         String str=in.next();
         char c= str.charAt(0);//收集答案;
         answer.append(c);
    }
  }

  }catch(IOException e){
     e.printStackTrace();
  }
  for(int i=0;i<result.length();i++){
     if(result.charAt(i)==answer.charAt(i)||
         result.charAt(i)==answer.charAt(i)-32){
        score+=25;
     }

  }
  System.out.println(score);
}
}
时间: 2024-12-28 15:53:38

Java输入/输出流体系的相关文章

输入/输出流体系

上一节介绍了输入/输出流的4个抽象基类,并介绍了4个访问文件的节点流的用法.通过上面示例程序不难发现,4个基类使用起来有些烦琐.如果希望简化编程,这就需要借助于处理流了. 1.处理流的用法 使用处理流时的典型思路是,使用处理流来包装节点流,程序通过处理流来执行输入出功能,让节点流与底层的I/O设备.文件交互. 实际识别处理流非常简单,只要流的构造器参数不是一个物理节点,而是已经存在的流,那么这种流就一定是处理流:而所有节点流都是直接以物理 IO 节点作为构造器参数的. 提示:关于使用处理流的优势

Java输入输出流(1)

1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO. 流IO的好处是简单易用,缺点是效率较低.块IO效率很高,但编程比较

Java 输入输出流 转载

转载自:http://blog.csdn.net/hguisu/article/details/7418161 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在

File类和输入输出流体系基础

参考: https://www.jianshu.com/p/7e84ef94f0c1 李刚<Java疯狂讲义> File类 File类是java.io包下代表与平台无关的文件和目录,如果希望在程序中操作文件和目录,都可以通过File类来完成.不管是文件还是目录都是使用File来操作的,File能新建.删除.重命名文件和目录,但是File类不能访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流. 构造一个File类实例 File类的常见构造方法:new File(String p

Java输入输出流(3)

8. 字符流Writer/Reader  Java中字符是采用Unicode标准,一个字符是16位,即一个字符使用两个字节来表示.为此,JAVA中引入了处理字符的流. 1. Reader抽象类 用于读取字符流的抽象类.子类必须实现的方法只有 read(char[], int, int) 和 close().但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能. 1) FileReader :与FileInputStream对应 主要用来读取字符文件,使用缺省的字符编码,有三种构

Java输入输出流总结(转载)

Java输入输出流总结 一.介绍 流是数据源或数据目标的输入或输出设备的抽象表示.支持流输入和输出的主要包是java.io,但是也有其他的包,比如java.nio.file.java.io包支持两种类型的流--包含二进制数据的字节流和包含字符数据的字符流. 当写数据到字节流中时,数据会以字节序列的形式写到流中,与它们在内存中的形式完全一样,在这个过程中不会发生数据转换.即java.io包中的InputStream和OutputStream的派生类,通常用来读取二进制数据,如图像和声音. 将字符串

java输入输出流及文件操作

*Author:Yuanhonglong *Date:2013-11-29 *1948281915package mine.file.Read_Write;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileReader;import java.io.IOException;import java.io.InputStream;import java

JAVA输入/输出流(字节流、字符流、缓冲流)

JAVA输入/输出流 前期知识准备 1.基本java语法 基本原理: 程序在运行期间,可能需要从外部的存储媒介或其他程序中读入所需要的数据,这就需要使用输入流对象.输入流的指向称作它的源,程序从指向源的输入流中读取源中数据.另一方面,程序在处理数据后,可能需要将处理结果写入到永久的存储媒介中或传给其他应用程序,这就需要使用输出流对象.输出流的指向称作它的目的地,程序通过向输出流中写入数据把数据传送到目的地. (本博文只给出文件字节流,文件字符流,缓冲流实例) 文件字节流: FileInputSt

Java输入输出流

1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO. 流IO的好处是简单易用,缺点是效率较低.块IO效率很高,但编程比较