编程语言的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. Luogu P1073 最优贸易

    题目描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双 ...

  2. TFboy养成记

    转自:http://www.cnblogs.com/likethanlove/p/6547405.html 在tensorflow的使用中,经常会使用tf.reduce_mean,tf.reduce_ ...

  3. Pyhton编程(五)之基本数据类型-列表、元组、字典

    一:列表(list) 列表是由一系列按特定顺序排列的元素组成,可以创建包含字母表中的所有字母.数字.或中文的列表,也可以将任何东西加入列表中,其中的元素之间可以没有任何关系. 在Python中,用方括 ...

  4. Jenkins与网站代码上线解决方案

    1.1 前言 Jenkins是一个用Java编写的开源的持续集成工具.在与Oracle发生争执后,项目从Hudson项目独立. Jenkins提供了软件开发的持续集成服务.它运行在Servlet容器中 ...

  5. [epub] epub.js的ePubReader函数报URI malformed错误的解决办法

    报错信息:URI malformed 今天遇到了一个奇怪的问题折腾三个小时,最后发现是作者在底层使用了decodeURIComponent进行URL解码,而我在应用层使用了escape/unescap ...

  6. 电子笔记本的思考(1)(ver0.3)

    章节:电子笔记本的思考(1)   陶哲轩在<解题·成长·快乐——陶哲轩教你学数学>中着重强调,用纸笔来“缓存”思维对于数学解题的重要性: 用选定的符号表达你所知道的信息,并画一个示意图.把 ...

  7. Python中的列表操作

    Python的列表操作可谓是功能强大且方便(相对于Java)简单.常规的操作就不说了(这不是一个入门教程),介绍几个很有特点的例子 添加 # 追加到结尾(append) li = [1, 2, 3, ...

  8. 高可用的Spring FTP上传下载工具类(已解决上传过程常见问题)

    前言 最近在项目中需要和ftp服务器进行交互,在网上找了一下关于ftp上传下载的工具类,大致有两种. 第一种是单例模式的类. 第二种是另外定义一个Service,直接通过Service来实现ftp的上 ...

  9. bundles.Add( )下无法绑定后缀为min.css的文件

    1.问题描述: 在绑定css的时候,除了后缀名为.min.css的文件,在render.style()不显示外,其他的css都正常加载, 2.解决办法: 这个是我在调试了几遍之后发现的规律,然后解决办 ...

  10. haproxy,tomcat.apache记录用户真实IP

    Haproxy配置: default加入: option httpclose option forwardfor Tomcat配置: server.xml中添加 prefix="localh ...