编程语言的I/O类库中常使用流这个抽象概念, 它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象。 “流” 屏蔽了实际的I/O设备中处理数据的细节。Java类库中的I/O类分成输入和输出两部分, 可以在JDK(文档里的类层次结构中查看到。

通过继承,任何自InputstreamReader派生而来的类都含有read()的基本方法, 用于读取单个字节或者字节数组。同样, 任何自 OutputStreamWriter派生而来的类都含有名为write()的基本方法,用于写单个字节或者字节数组。

但是, 我们通常不会用到这些方法,它们之所以存在是因为别的类可以使用它们,以便提供更有用的接口。 因此, 我们很少使用单一的类来创建流对象, 而是通过叠合多个对象来提供所期望的功能(这是装饰器设计模式)。 实际上, Java中 “流” 类库让人迷惑的主要原因就在于:创建单一的结果流, 却需要创建多个对象。

  在Java 1.0中, 类库的设计者首先限定与输入有关的所有类都应该从lnputStream继承,而与输出有关的所有类都应该从OutputStream 继承

下面介绍InputStream 和子类 FileInputStreamOutputStream 和子类 FileOutputStream 

1.FileInputStream 

 public class FileInputStreamDemo {

     /**
      * @param args
      * @throws IOException
      */
     public static void main(String[] args) throws IOException {
         // TODO Auto-generated method stub

         File file = new File("H:\\workspace\\Testfile\\1.txt");//封装文件对象
         if(!file.exists()){
             throw new RuntimeException("文件不存在");//文件不存在,抛异常
         }
         /**
          * 将已有的文件读取出来
          * FileInputStream
          */
         FileInputStream fis = new FileInputStream(file);//FileNotFoundException

         int by1 = 0;
         int i =1;
         while((by1 = fis.read()) != -1){
             System.out.println(i+":"+by1);
             i++;
         }
         fis.close();
     }

 }

2.FileOutputStream 

public class FileOutputStreamDemo {

    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub

        /*
         * 将数据写入文件
         * 使用字节输出流
         * FileOutputStream
         * */
        File dir = new File("H:\\workspace\\Testfile");
        if(!dir.exists()){
            dir.mkdir();//文件不存在则创建
        }
        //输出流自动创建文件,如果存在则覆盖
        FileOutputStream fos = new FileOutputStream("H:\\workspace\\Testfile\\fileoutputstream.txt");//有异常

        //调用输出流的写功能
//        String str = "abc123";
//        byte[] buf = str.getBytes();//将字符串转化为字节数组
        fos.write("abc123".getBytes());//异常处理

        //关闭资源
        fos.close();
    }

}

3.异常处理

public class IOExceptionDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream("H:\\workspace\\Testfile\\fileoutputstream.txt");
            fos.write("abc123".getBytes());//

        } catch (IOException e) {
            // TODO Auto-generated catch block
            System.out.println(e.toString());
        }finally{
            if(fos != null){
                try {
                    fos.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    throw new RuntimeException();//无法处理的异常,继续抛
                }

            }
        }

    }

}

Java I/O---输入与输出的更多相关文章

  1. JAVA框架 Mybaits 输入和输出映射

    一.输入映射 当前端传来的参数,比较复杂,比如说用户名称.订单单号.账号信息等等.后端有可能有多个projo类对应这些信息.我们需要把这些的projo类封装成一个类似一个vo类. 通过设置字段形式关联 ...

  2. Java文本类型输入与输出

    import java.io.*; import java.time.LocalDate; import java.util.Scanner; public class Test { public s ...

  3. Java控制台中输入中文输出乱码的解决办法

    Run---Run Configurations---Common---Encoding---Other---GBK Run Configurations里的Common中将编码方式改成GBK就正常了

  4. 输入和输出--File类

    输入和输出 写在前面的:Java中的输入和输出还是比较重要的,之前我都没想整理IO和多线程的,但是在研究后面的好多东西时候,经常要读取资源文件,这个时候就不得不回过头来整理IO了.要玩熟Java的输入 ...

  5. 1.java.io包中定义了多个流类型来实现输入和输出功能,

    1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分 类,按功能分为:(C),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(G)   A.输入流和输出流 B ...

  6. 【JAVA零基础入门系列】Day7 Java输入与输出

    [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...

  7. Java 控制台输入数字 输出乘法表(代码练习)

    最近,回忆了一些刚学习Java时经常练习的一些小练习题.感觉还是蛮有趣的,在回顾时想起好多学习时的经历和坎坷,一道小小的练习题要研究半天,珍重过往,直面未来.下面贡献代码,Java 控制台输入数字 输 ...

  8. 输入和输出--java的NIO

    Java的NIO 实际开发中NIO使用到的并不多,我并不是说NIO使用情景不多,是说我自己接触的并不是很多,前面我在博客园和CSDN上转载了2篇别人写的文章,这里来大致总结下Java的NIO,大概了解 ...

  9. Java:文件字符流和字节流的输入和输出

    最近在学习Java,所以就总结一篇文件字节流和字符流的输入和输出. 总的来说,IO流分类如下: 输入输出方向:     输入流(从外设读取到内存)和输出流(从内存输出到外设) 数据的操作方式: 字节流 ...

  10. java基础-基本的输入与输出

    java基础-基本的输入与输出 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.基本的输出 基本的输出,System.out 就是系统的标准输出设备,默认为显示器. 1>. ...

随机推荐

  1. 1.0-springboot的java配置方式

    1.创建User实体类. @Data public class User { private String username; private String password; private Int ...

  2. kafka原理和实践(二)spring-kafka简单实践

    系列目录 kafka原理和实践(一)原理:10分钟入门 kafka原理和实践(二)spring-kafka简单实践 kafka原理和实践(三)spring-kafka生产者源码 kafka原理和实践( ...

  3. Core 核心标签库->运算式操作

    jstl--->Core 核心标签库->运算式操作  -->out.remove.set.catch <c:out>:用来显示资料的内容 语法1:没有本体的内容 < ...

  4. Python将纳入高考?

    最近,"Python将纳入高考"的消息,狠狠地刷了朋友圈. 尽管这则消息目前还未得到官方的确认,但人们对于Python的火热关注度,还是引来众程序员热议. 虽然小编资历尚浅,但还是 ...

  5. nyoj 2 括号配对问题 栈

    nyoj 2 括号配对问题 题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=2 思路: 栈:'(' '['入栈,遇到 ']' ')'出栈 ...

  6. Linux yum安装和源码安装

    转载注明出处:原文地址 Linux Yum 在线安装 在线:Yum配置地址:/etc/yum.repos.d/CentOS-Base.repo 离线:光盘搭建Yum源 挂载光盘 使在线Yum源失效:m ...

  7. Mac下CUDA开启及Tensorflow-gpu安装

    本文由@ray 出品,转载请注明出处.  文章链接:http://www.cnblogs.com/wolfray/p/8040694.html 在之前的文章中,笔者介绍了在Mac下安装Tensorfl ...

  8. C#判断ListBox是否显示了水平滚动条/横向滚动条

    参看: Windows消息定义网址:http://wenku.baidu.com/link?url=9fesYjbLSDx9_TsLgSZSVoR7ELal-60x2p-lua_iPR44Xfekz0 ...

  9. Python中创建ndarrary的20中方法

    本文完整示例:完整示例代码 本文介绍了基础的.常用的创建ndarrary的多种方法,附带示例代码. 一.通过ndarray创建 import numpy as np 1.1 一维数组 a = np.a ...

  10. google开源服务器apprtc的搭建

    本文参考网帖: http://www.jianshu.com/p/c55ecf5a3fcf http://io.diveinedu.com/2015/02/05/%E7%AC%AC%E5%85%AD% ...