美文网首页
java中的IO流笔记

java中的IO流笔记

作者: 青木石 | 来源:发表于2016-08-10 18:05 被阅读94次

date: 2016-08-10 16:54:39
tags:java


IO流

I是输入,读取;O是输出,写入。

读取流:从硬盘中、网络中读取数据的过程
写入流:就是将数据写入到硬盘中。

按照数据类型分为:字节流和字符流。

字节流:将字节数组按照顺序存入、写入到硬盘中, 
    将字节码翻译成字符串需要编码表(asc,gbk,utf-8(国际通用))  
    字节流可以处理任何数据类型:视频,音频 

字符流:是专门处理字符串的,记事本      不能处理视频,音频。

按照输出方向可以分为输出流和输入流:OutPut Input

硬盘需要写入数据      输出流
从硬盘中读取数据      输入流        相对于我们自己而言。

字节流和字符流的区别:

在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,

在字符流中输出主要是使用Writer(将数据写入硬盘)类完成,输入流主要使用Reader(从硬盘中读取)类完成

 字节流是最基本的,所有的InputStrem和OutputStream的子类都是,
主要用在处理二进制数据,它是按字节来处理的 

但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,
也就是要进行字符集的转化 这两个之间通过 InputStreamReader,OutputStreamWriter来关联,

实际上是通过byte[]和String来关联 
在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统一而造成的 

字符流:

抽象Write类,FileWrite子类

输出数据到硬盘:

FileWriter步骤:

1. 创建FileWriter
2. 调用Writer方法。        可以调用多次,每次都在后面追加
3. 刷新缓冲
4. 关闭流           关闭之后不能再使用了。关闭时会自动去刷新缓冲区。    

IO操作属于资源操作,一定要记得关闭 (采用抛异常处理,将文件关闭放于finally之中)

相关操作

  • FileWrite指定文件路径时,如果没有该文件,则创建此文件。
    文件追加new FileWriter("文件名",true) true 代表以追加模式写入文件,false则是覆盖
  • \r\n windows记事本支持的换行。
    \n 和\r\n edipulse 支持的换行。

  • 相对路径:默认是当前项目的路径下。FileWriter fw=new FileWriter("a.txt");

FileReader步骤:

1. 创建FileReader
2. 调用Reader方法。        返回每个字符,当读到没有字符时,返回-1;
3. 刷新缓冲
4. 关闭流           关闭之后不能再使用了。关闭时会自动去刷新缓冲区。

FileReader 读取的两种方式

    1. 采用fr.read() 方法去读取。
    2. 采用fr.read(char[] chars) 去读取, 返回的是读取的个数size,chars里面是读
         取的字符(如果size小于字符数组中的个数,则会残留上一次读取的字符串)
  • 可采用while循环增强读取。

应用

将相对路径的a.txt文件拷贝到b.txt中

package com.vdata;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 *     文件复制:将项目下的a.txt复制到项目下的copy.txt
 * @author zwy
 */
public class Demo10 {

public static void main(String[] args)   {
    //读取
    FileReader fr=null;
    
    //写入
    FileWriter fw=null;
    
    //第一种复制
    /*int num;
    try {
        fr=new FileReader("a.txt");
        fw=new FileWriter("b.txt");
        while ((num=fr.read())!=-1) {
             fw.write((char)num);
            
        }
    } catch (IOException e) {
        
        e.printStackTrace();
    }finally{
        if(fw!=null)
        fw.close();
        if(fr!=null)
        fr.close();
        
    }
    */
    
    //第二种复制方式
    int size;
    char[] chars=new char[4];
    try {
        fr=new FileReader("a.txt");
        fw=new FileWriter("c.txt",false);
        
        while((size=fr.read(chars))!=-1){
            fw.write(chars, 0, size);;
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    finally{                //确保关闭流
        try {
            if(fw!=null)
            fw.close();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        try {
            if(fr!=null)
            fr.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
    
}

}

相关文章

  • 28、说说Java 中 IO 流

    说说Java 中 IO 流 Java 中 IO 流分为几种? 1、按照流的流向分,可以分为输入流和输出...

  • 05-Java中的IO与NIO面试题(15题)

    1、Java 中 IO 流? Java 中 IO 流分为几种?按照流的流向分,可以分为输入流和输出流;按照操作单元...

  • java中的IO流笔记

    date: 2016-08-10 16:54:39tags:java IO流 I是输入,读取;O是输出,写入。 按...

  • Java之IO流详解

    title: Java之IO流详解tags: Java IO流categories: Java IO流 大多数应用...

  • Java中的IO流

    Java中的IO流分类 输入IO流输入字节流(InputStream)处理流缓冲流(BufferedInputSt...

  • IO

    一 IO中各个流的基本用法 参考: java中的IO整理 二 IO体系 参考:看完这个,Java IO从此不在难 ...

  • Java IO 笔记

    学习Java中的IO,首先要理解Java中IO的流模型。所谓流,可以假想成河流,流的数据源,就是河流的发源地,流是...

  • Java新特性之Java8的那些事儿-Stream

    什么是流? ​ Java Se中对于流的操作有输入输出IO流,而Java8中引入的Stream 属于Java ...

  • java笔记--IO流(字符流和字节流)

    IO流: 用来处理设备之间的数据传书。Java对数据的操作是通过流的方式。Java用于操作流的对象都在IO包中。流...

  • java笔记--IO流

    标准输入输出流:System类中的字段--in,out。各代表了系统标准的输入和输出设备。 默认输入设备是键盘,输...

网友评论

      本文标题:java中的IO流笔记

      本文链接:https://www.haomeiwen.com/subject/gfejsttx.html