美文网首页
Day18--(2)IO流

Day18--(2)IO流

作者: pure_joy | 来源:发表于2019-07-18 22:46 被阅读0次
IO(Input Output)流
  • IO流用来处理设备之间的数据传输
  • Java对数据的操作是通过流的方式
  • Java用于操作流的对象都在IO包中
  • 流按操作数据分为两种:字节流与字符流
  • 流按流向分为:输入流、输出流。
IO流常用基类
  • 字节流的抽象基类:InputStream,OutputStream
  • 字符流的抽象基类:Reader、Writer
    注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。如:InputStream的子类FileInputStream。
    既然IO流是用于操作数据的,那么数据的最常见体现形式是:文件。FileWriter。
IO的异常处理方式
/*
Io异常的处理方式
*/
import java.io.*;
class FileWriterDemo2
{
    public static void main(String[] args) 
    {
        FileWriter fw;

        try
        {
            fw = new FileWriter("demo.text");

            fw.write("adada");
        }
        catch(IOException e)
        {
            System.out.println(e.toString());
        }
        finally
        {
            try
            {
                if(fw!=null)
                    fw.close();
            }
            catch(IOException e)
            {
                System.out.println(e.toString());
            }
        }
    }
}
文件续写
/*
演示对已有文件的数据续写
*/
import java.io.*;
class FileWriterDemo3
{
    public static void main(String[] args) 
    {
        FileWriter fw;

        try
        {
            //传递一个true参数,代表不覆盖已有的文件,并在已有文件的末尾处进行数据续写。
            fw = new FileWriter("demo.txt",true);

            fw.write("nihao\r\nxiexie");
        }
        catch(IOException e)
        {
            System.out.println(e.toString());
        }
        finally
        {
            try
            {
                if(fw!=null)
                    fw.close();
            }
            catch(IOException e)
            {
                System.out.println(e.toString());
            }
        }
    }
}
文本文件读取方式一
/*
文本文件读取方式一
*/
import java.io.*;
class FileReaderDemo
{
    public static void main(String[] args) throws IOException
    {
        //创建一个文件读取流对象,和指定名称的文件相关联。
        //要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException
        FileReader fr = new FileReader("demo.txt");

        //调用读取流对象的read方法。
        //read():一次读一个字符,而且会自动往下读。

        int ch = 0;

        while((ch=fr.read())!=-1)
        {
            System.out.println((char)ch);
        }   

        /*
        while(true)
        {
            int ch = fr.read();
            if(ch==-1)
                break;
            System.out.println("ch="+(char)ch);
        }
        */

        fr.close();
    }
}
文本文件读取方式二
/*
第二种方式:通过字符数组进行读取
*/
import java.io.*;
class FileReaderDemo2
{
    public static void main(String[] args) throws IOException
    {
        FileReader fr = new FileReader("demo.txt");

        //定义一个字符数组,用于存储读到字符。
        //该read(char[])返回的是读到字符个数。
        char[] buf = new char[3];

        int num = 0;
        while((fr.read(buf))!=-1)
        {
            System.out.println(new String(buf,0,num));
        }

        

        fr.close();
        
    }
}
拷贝文本文件
/*
将C盘一个文本文件复制到D盘

复制原理:
其实就是将C盘下的文件数据存储到D盘的一个文件中。

步骤:
1、在D盘创建一个文件,用于存储C盘文件中的数据。
2、定义读取流和C盘文件关联
3、通过不断的读写完成数据存储。
4、关闭资源
*/
import java.io.*;
class CopyTest
{
    public static void main(String[] args) 
    {
        //copy_1();
        copy_2();
    }

    //从C盘读一个字符,就往D盘写一个字符。
    public static void copy_1()
    {
        //创建目的地
        FileWriter fw = new FileWriter("RunTimeDemo_copy.txt");

        //与已有文件关联
        FileReader fr = new FileReader("RuntimeDemo.java");

        int ch = 0;

        while((ch=fr.read())!=-1)
        {
            fw.write(ch);
        }

        fw.close();
        fr.close();
    }

    public static void copy_2()
    {
        FileWriter fw = null;
        FileReader fr = null;

        try
        {
            fw = new FileWriter("RunTimeDemo_copy.txt");
            fr = new FileReader("RunTimeDemo_copy.java");

            char[] buf = new char[1024];

            int len = 0;
            while((len=fr.read(buf))!=-1)
            {
                fw.write(buf,0,len);
            }
        }
        catch (IOException e) 
        {
            throw new RuntimeException("读写失败");
        }
        finally
        {
            if(fr!=null)
                try
                {
                    fr.close();
                }
                catch(IOException e)
                {

                }
            if(fw!=null)
                try
                {
                    fw.close();
                }
                catch(IOException e)
                {

                }
        }
    }
}

相关文章

  • Day18--(2)IO流

    IO(Input Output)流 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Ja...

  • IO流2

    IO流二 字符流 计算机并不区分二进制文件与文本文件。所有的文件都是以二进制形式来存储的,因此,从本质上说,所有的...

  • IO Stream - 字节流

    字节流 IO流概述和分类IO流介绍1.IO:输入/输出(Input/Output)2.流:是一种抽象概念,是对数据...

  • Java IO流(2)

    一、缓冲流概要   java缓冲流本身不具IO功能,只是在别的流上加上缓冲提高效率,像是为别的流装上一种包装。当对...

  • 2018-04-25

    java.io(Input/Output)使用详解 目录1、流(Stream)2、流的分类3、java.io包下的...

  • java IO、NIO、AIO

    IO流(同步、阻塞) 、 NIO(同步、非阻塞) 、 NIO2(异步、非阻塞) 概述在我们学习Java的IO流之前...

  • Java NIO

    1、IO和NIO的区别? 1)IO面向流、NIO面向缓冲;2)IO是阻塞IO、NIO是非阻塞IO;3)无 与 选择...

  • java基础-day20-IO流和StringBuffer

    IO流和StringBuffer 1. IO流 1.1 IO流概述 1.2 IO流分类 1.3 文件操作输入输出字...

  • java——IO_拷贝文件夹

    1、图片的拷贝(io流): 图片,文档,ppt等等的拷贝都是运用了输入流和输出流(io流)来实现 2、拷贝目录下所...

  • “IO与NIO ”重点概念整理

    一、IO与NIO的区别 1、传统IO面向流(输入输出流)、基于管道单向运输、是一个阻塞型IO。2、NIO面向缓冲区...

网友评论

      本文标题:Day18--(2)IO流

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