【Java】IO流作业

package IOExperiment;

import java.io.*;

public class Program {
    private static final String fileName = "test.txt";//创建一个常量,用于保存文件名
    public static void main(String[] args)
    {
        new CreatFile("D:\\"+fileName,"Hello Java");//调用CreatFile类的构造方法创建D盘的文件
        ReadFile read=new ReadFile("D:\\"+fileName);//创建读取类
        new CreatFile("E:\\"+fileName,read.BeginRead());//使用读取类读取文件内容,并以此创建新的文件
    }
}

//创建文件类
class CreatFile
{
    private String filePath;//文件的位置
    private String fileContent;//文件的内容
    private BufferedWriter outputstream;//输出数据流
    //构造函数,需要分别传入文件位置和文件内容
    public CreatFile(String filePath,String content)
    {
        this.filePath=filePath;
        this.fileContent=content;//赋值
        BeginCreate();//调用方法构建文件
    }

    //构造文件的方法
    private void BeginCreate()
    {
        try
        {
            outputstream=new BufferedWriter(new FileWriter(filePath));//实例化输出流,这里可能抛出异常,所以使用catch捕获之
            outputstream.write(fileContent);//把文件内容写入文件
            outputstream.flush();//刷新并清空流数据
        }
        catch (Exception e)//捕获创建文件的异常
        {
            e.printStackTrace();//打印异常原因
        }
        finally
        {
            try
            {
                if(outputstream!=null)outputstream.close();//不管异常是否存在,终需要关闭流
            }
            catch (Exception ex)//捕获关闭流时的异常
            {
                ex.printStackTrace();
            }
        }
    }
}

//读取文件的类
class ReadFile
{
    private String filePath;//文件的位置
    BufferedReader inputstream;//输入流
    //读取文件类的构造方法,只需要传入文件位置
    public ReadFile(String filePath)
    {
        this.filePath=filePath;//赋值
    }

    //读取文件的方法,因为需要返回文件的内容,所以设为公共方法
    public String BeginRead()
    {
        String result=null;//要返回字符串,考虑到读取失败的情况,遂在此声明并初始化返回值,以杜绝无值返回的问题
        try
        {
            inputstream = new BufferedReader(new FileReader(filePath));//创建输入流
            result=inputstream.readLine();//读取文件的第一行,将读取结果传给result
        }
        catch(Exception e)//考虑到读取失败的问题,需捕获读取时的异常
        {
            e.printStackTrace();
        }
        finally
        {
            try
            {
                if(inputstream!=null)inputstream.close();//不管读取成功与否,终需要关闭输入流
            }
            catch (Exception ex)//捕获输入流关闭失败的异常
            {
                ex.printStackTrace();
            }
        }
        return result;//返回读取结果
    }
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据