杰神之Java中IO的字节流输出读入的方法

原创 2018年01月30日 21:58:21

字节流

字节流主要是操作byte类型数据,也byte数组为准,主要操作类就是
* 字节输出流:OutputStream
* 字节输入流:InputStream
在使用字节流之前,我们要先知道输出输入到底是什么
* 什么叫输出?
程序—>文件
* 什么叫输入?
文件—>程序
输入输出的参照物是自己的程序
* 读取/写入文件流程
* 1.绑定数据源文件(要读哪个文件)
* 2.使用read/write方法读/写
* 3.关闭资源

字节输出流:OutputStream

OutPutStream是抽象类,是所有输出流的父类,如果想要使用此类的话,首先必须通过子类实例化对象,如果操作的是一个文件,则可以使用FileOutputStream类
OutputStream类中的常用方法:

方法  描述  
public void close() throws IOException  关闭输出流
public void flush() throws IOException  刷新缓冲区
public void write(byte[] b) throws IOException  将一个byte数组写入数据流  
public void write(byte[] b,int off,int len)throws IOException   将一个指定范围的byte数组写入数据流  
public abstract void write(int b) throws IOException    将一个字节数据写入数据流 

代码示例:创建文件并写入字符

    public static void fun1() throws FileNotFoundException, IOException {
        File file = new File("/Users/lanou/Desktop/haha/wang.txt");
        FileOutputStream oStream = new FileOutputStream(file);
        // 按ASCII写入
        oStream.write(100);
        // 按字节数组写入
        byte[] b = { 65, 66, 67, 68 };
        oStream.write(b);
        // 按字节数组的索引和长度写入
        oStream.write(b, 1, 2);
        // 简单写法
        oStream.write("Hello".getBytes());
        oStream.write("World".getBytes());
        oStream.close();
    }

注:
1、 在操作的时候如果文件本身不存在,则会为用户自动创建新文件。

2、 如果要追加的内容需要换行,则在内容中加入“/t”(windows中是\r\n )就可以了。

以上的操作在写入数据之后,文件之前的内容已经不存在了,因为在IO操作中默认的情况是将其进行覆盖的,如果现在想执行追加的功能,则必须设置追加的操作,此时可以通过FileoutputStream向文件中追加内容:

    public static void fun2() throws FileNotFoundException, IOException {
        /*
         * 方法的续写
         */
        File file = new File("/Users/lanou/Desktop/haha/long.txt");
        FileOutputStream oStream = new FileOutputStream(file, true);
        oStream.write("hello".getBytes());
        oStream.close();
    }

在构造方法中,如果将append的值设置为true,则表示在文件的末尾追加内容。

字节输入流:InputStream

和OutputStream一样,InputStream本身也是一个抽象类,必须依靠其子类,如果现在是从文件中读取,子类肯定是FileInputStream。
InputStream类的常用方法:

方法  描述  
public int available() throws IOException   可以取得输入文件的大小  
public void close() throws IOException  关闭输入流  
public abstract int read() throws IOException   读取内容,以数字的方式读取  
public int read(byte[] b) throws IOException    将内容读到byte数组之中,同时返回个数

示例代码:

    public static void fun1() throws FileNotFoundException, IOException {
        File file =new File("/Users/lanou/Desktop/haha/www.txt");
        FileInputStream iStream=new FileInputStream(file);
        //  读取
        char r1 = (char)iStream.read();
        char r2 = (char)iStream.read();
        char r3 = (char)iStream.read();
        //当读取到文件末尾的时候会返回-1
        //相当于你读到-1文件就读完了
        int r4 = iStream.read();
        System.out.println(r1);
        System.out.println(r2);
        System.out.println(r3);
        System.out.println(r4);
        iStream.close();
    }
    public static void fun2() throws FileNotFoundException, IOException {
        //根据文件长度读取
        File file =new File("/Users/lanou/Desktop/haha/www.txt");
        FileInputStream iStream=new FileInputStream(file);
        for(int i =0;i<file.length();i++) {
            char read = (char)iStream.read();
            System.out.print(read);
        }
        iStream.close();
    }
    public static void fun3() throws FileNotFoundException, IOException {
        //使用字节数组,读取文件
        File file =new File("/Users/lanou/Desktop/haha/www.txt");
        FileInputStream iStream=new FileInputStream(file);
        //声明一个长度为2的空的字节数组
        //读取时会把读出来的内容放进字节数组中存储
        byte[] b=new byte[2];
        iStream.read(b);
        System.out.println(new String(b));
        iStream.read(b);
        System.out.println(new String(b));
        iStream.close();
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。

Java之IO流---字节流

1.概述1.1 IO流的引入 IO流在很多语言已有体现,诸如C语言的stdio.h,C++中的iostream。Java中的IO流大抵是用于在控制台、磁盘、内存上进行数据的读写操作,完成数据的传递...
  • qq_28261343
  • qq_28261343
  • 2016年09月27日 19:23
  • 4716

Java.io包中的流的输入输出详解1(字节流)

由于流在java中的重要性,和本身自己在流这方面存在混乱的原因。我将会对流进行一次很清晰的总结和记录下来我的学习过程。第一次开始了发表博客,我很高兴可以讲自己的理解和大家进行分享。有不好和不对的地方请...
  • zhbitxhd
  • zhbitxhd
  • 2012年11月20日 23:09
  • 2694

Java基础:IO流之字节流和字符流

一、流的概念流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。一个流,必有源端和目的端,它们...
  • axi295309066
  • axi295309066
  • 2016年10月15日 00:23
  • 1522

Java开发岗位面试题归类汇总二:Java IO

1、讲讲IO里面的常见类,字节流,字符流、接口、实现类、方法阻塞 答:输入流就是从外部文件输入到内存,输出流主要是从内存输出到文件。我们用Eclipse开发小程序在控制台输入数据就属于输入流,即从控制...
  • Love_Taylor
  • Love_Taylor
  • 2017年03月15日 20:27
  • 2803

java io字符流和字节流实例

字节流,一般用于处理二进制数据,包括图片,视频,音频等 package com.javaio.myinputstream; import java.io.BufferedInputStream; ...
  • pingnanlee
  • pingnanlee
  • 2013年07月19日 14:10
  • 2561

IO流__【字节流】【字节流缓冲区】【read和write特点】

字符流 FileReader、FileWriter BufferedReader、BufferedWriter 字节流File InputStream  此抽象类是表示字节输入...
  • ie800
  • ie800
  • 2013年12月25日 16:39
  • 1684

IO流之字节流和字符流的区别

java.io包中的stream类根据它们操作对象的类型是字符还是字节可分为两大类: 字符流和字节流。 它们之间的区别在于以下几点: 1、 stream结尾都是字节流,如:FileInputStrea...
  • I_Am_Zou
  • I_Am_Zou
  • 2016年07月29日 17:00
  • 834

Java中IO体系字节流与字符流之适配器模式

在java 的IO体系中,除了常用到的装饰模式外,还有一个常用的设计模式:适配器设计模式,主要用来实现字节流和字符流类的适配转换工作。相比装饰模式而言,适配器模式就相对简单多了,完成一个适配器模式需要...
  • qq838642798
  • qq838642798
  • 2017年01月03日 11:50
  • 361

黑马程序员-Java I/O流(一)-IO流概述、字符流、字节流、流操作规律

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-1. 概述 流:可以理解数据的流动,就是一个数据流。Java中与IO相关的类有很多,都集中在java.io...
  • u012561959
  • u012561959
  • 2015年11月05日 04:24
  • 1586

IO流学习笔记3——字节流和字符流的输入/输出

字节流和字符流的操作方式基本一样,区别只是操作的数据单元有区别:字节流操作的数据单元是字节,字符流操作的数据单元字符。 InputStream和Reader是所有输入流的基类,它们两个都是抽象类,本...
  • gnail_oug
  • gnail_oug
  • 2015年08月14日 17:14
  • 1092
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:杰神之Java中IO的字节流输出读入的方法
举报原因:
原因补充:

(最多只允许输入30个字)