Day18--(2)IO流

2019-07-18  本文已影响0人  pure_joy
IO(Input Output)流
IO流常用基类
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)
                {

                }
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读