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);
}
}

总结

以上就是本文关于Java输入/输出流体系详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Java基础强化训练输入错误即结束进程、Java控制台输入数组并逆序输出的方法实例、Java输出链表倒数第k个节点等,如有不足之处,欢迎留言指出,期待您的宝贵意见。

(0)

相关推荐

  • Java输入输出流复制文件所用时间对比

    废话不多说,关键代码如下所述: package com.edu.xynu; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class IOUnitCopy {

  • Java输入输出流的使用详细介绍

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

  • java输入字符串并将每个字符输出的方法

    如下所示: import java.util.Scanner; public class Main{ public static void main(String[] args){ int i,len; String str; Scanner in = new Scanner(System.in); str = in.next(); len = str.length(); //求出长度 for (i=0; i<len; i++){ System.out.println(str.charAt(i)

  • Java输入三个整数并把他们由小到大输出(x,y,z)

    题目:输入三个整数x,y,z,请把这三个数由小到大输出. 程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x> y则将x与y的值进行交换,然后再用x与z进行比较,如果x> z则将x与z的值进行交换,这样能使x最小. 程序设计: import java.util.*; public class test { public static void main (String[]args){ int i=0; int j=0; int k=0; int x=0; System.out.

  • Lua教程(十五):输入输出库(I/O库)

    I/O库为文件操作提供了两种不同的模型,简单模型和完整模型.简单模型假设一个当前输入文件和一个当前输出文件,他的I/O操作均作用于这些文件.完整模型则使用显式的文件句柄,并将所有的操作定义为文件句柄上的方法.     1. 简单模型:     I/O库会将进程标准输入输出作为其缺省的输入文件和输出文件.我们可以通过io.input(filename)和io.output(filename)这两个函数来改变当前的输入输出文件.     1). io.write函数:     函数原型为io.wri

  • Java输入输出流实例详解

    本文实例讲述了Java输入输出流.分享给大家供大家参考,具体如下: 字节输出流,输出到文件中(写) OutputStream抽象类 选好文件 复制代码 代码如下: File file = new File("E:" + File.separator + "myFile" + File.separator + "test" + File.separator + "123.txt"); 子类实例化,需要抛异常 稍后传输的数据覆盖原

  • JavaI/O深入学习之输入和输出

    前言 编程语言的I/O类库中常使用流这个抽象概念,它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象."流"屏蔽了实际的I/O设备中处理数据的细节. 在文章:<<Java I/O深入学习之File和RandomAccessFile>>中,我们讲到RandomAccessFile可以写入和读取文件,具备I/O功能,但是其只能针对文件,而I/O还涉及到很多其他场景比如网络.读取内存中的字符串等,所以Java类库中提供了一系列的类库来对其进行支持,也

  • Java输入/输出流体系详解

    在用java的io流读写文件时,总是被它的各种流能得很混乱,有40多个类,理清啦,过一段时间又混乱啦,决定整理一下!以防再忘 Java输入/输出流体系 1.字节流和字符流 字节流:按字节读取.字符流:按字符读取. 字符流读取方便,字节流功能强大,当不能用字符流时,可以用字节流. 字节流基类:InputStream.OutputStream InputStream方法: OutputStream方法: 字符流基类:Reader.Writer Reader方法: Writer方法: 2.输入输出流体

  • 浅谈JAVA中输入输出流实例详解

    java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象.在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流....本文的目的是为大家介绍JAVA中输入输出流实例详解. 流的层次结构 定义:        java将读取数据对象成为输入流,能向其写入的对象叫输出流.结构图如下: 1.输入输出: 输入/输出(Input/Output)是指对某

  • Java集合继承体系详解

    Java的集合类是一种特别有用的工具,它可以用于存储数量不等的多个对象,并可以实现常用的数据结构,如栈.队列等.Java集合还可以用于板寸具有映射关系的关联数组. java集合就像是一个容器,我们可以把多个对象(实际上是对象的引用,习惯上叫对象,)保存到集合容器中.在JDK1.5以前java集合会丢失容器中所有对象的数据类型,JDK1.5以后增加了泛型,java集合可以记住容器中对象的数据类型. Java集合大致可以分为三个体系:Set List Map.所有的集合类都位于java.util包下

  • Java 中的HashMap详解和使用示例_动力节点Java学院整理

    第1部分 HashMap介绍 HashMap简介 HashMap 是一个散列表,它存储的内容是键值对(key-value)映射. HashMap 继承于AbstractMap,实现了Map.Cloneable.java.io.Serializable接口. HashMap 的实现不是同步的,这意味着它不是线程安全的.它的key.value都可以为null.此外,HashMap中的映射不是有序的. HashMap 的实例有两个参数影响其性能:"初始容量" 和 "加载因子&quo

  • Java中File类方法详解以及实践

    目录 File类概述 File类常用构造器 File类常用方法 常用方法示例 createTempFile临时文件创建示例 FilenameFilter文件过滤器示例 总结 File类概述 File类是java.io包下代表与平台无关的文件和目录.File可以新建.删除.重命名文件和目录,但是不能访问文件内容本身,如果需要访问内容的话,需要通过输入/输出流进行访问. File类可以使用文件路径字符串创建File实例,路径既可以是绝对路径,也可以是相对路径.一般相对路径的话是由系统属性user.d

  • Java 阻塞队列BlockingQueue详解

    目录 一. 前言 二. 认识BlockingQueue 三.BlockingQueue的核心方法: 四.常见BlockingQueue 五. 小结 一. 前言 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利.本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景. 二. 认识BlockingQueue 阻塞队列,

  • Java压缩文件操作详解

    目录 一.题目描述-压缩文本文件 1.题目 2.解题思路 3.代码详解 二.题目描述-压缩文件解压到指定文件夹 1.题目 2.解题思路 3.代码详解 三.题目描述-压缩所有子文件夹 1.题目 2.解题思路 3.代码详解 一.题目描述-压缩文本文件 1.题目 题目:使用文本压缩技术,可以节约磁盘空间,还便于管理. 实现:做一个压缩指定文件夹内的所有文本文件的工具. 2.解题思路 创建一个类:ZipTextFileFrame 使用ZipTextFileFrame继承JFrame构建窗体 压缩文件主要

  • java HttpServletRequest和HttpServletResponse详解

    java  HttpServletRequest和HttpServletResponse详解 最近由于CAS相关的JAR包的重新封装,所以想尽量做到0配置,而这个过程中大量使 用HttpServletRequest,现在整理如下,以便以后查阅.(表格为从别的地方复制的,排版渣了点,酬和看吧.) 请求与响应相关的类和接口非常多,下表是主要的与请求和接口相关的类以及接口. 主要的与请求和接口相关的类及接口 方    法 说    明 ServletInputStream Servlet的输入流 Se

  • Java 反射机制实例详解

    Java 反射机制实例详解 一.JAVA是动态语言吗? 一般而言,说到动态言,都是指在程序运行时允许改变程序结构或者变量类型,从这个观点看,Java和C++一样,都不是动态语言. 但JAVA它却有着一个非常突出的动态相关机制:反射.通过反射,Java可以于运行时加载.探知和使用编译期间完全求和的类.生成其对象实体,调用其方法或者对属性设值.所以Java算是一个半动态的语言吧. 反射的概念: 在Java中的反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法; 对于任意一个对

随机推荐