如何使用装饰设计模式读取指定路径下的之纯文本文件的实现代码

戏子无情 提交于 2020-04-27 15:10:27

编程要求:

在C:盘根目录下创建纯文本文件 test.txt,并键入下列内容:

呦呦鹿鸣,食野之蒿。

今夕何夕,见此良人。

桃之夭夭,灼灼其华。

如月之恒,如日之升。

巧笑倩兮,美目盼兮。

琴瑟在御,莫不静好。

投我以桃木,报之以琼瑶。

伐木丁丁,鸟鸣嘤嘤。出自幽谷,迁于乔木。


编写程序,读入上述文件,并把内容在控制台上输出。

编码解析:

  • 首先在相应目录下创建相应的文件,但要注意创建文件的格式要与代码中的相同。(这里不懂是什么关系没事,看到下面代码就懂了)
    笔者使用的是EditPlus,可以直接设置文件的编码格式

在这里插入图片描述

  • 我的文件的路径:C:\Users\10593\test.txt(这个是自己放的位置)

实现代码

import java.io.*;
public class JavaIO {
    public static void main(final String[] args){
        FileInputStream reader = null;
        BufferedReader bufferedReader = null;
        String line = null;
        InputStreamReader isr = null;       
        try {
            String filePath = "C:\\Users\\10593\\test.txt";
            //至于这里为什么要双斜杠见下文
            File file = new File(filePath);
            reader = new FileInputStream(file);
            isr = new InputStreamReader(reader,"UTF-8");
            //这里的UTF-8就是前文提到的文件的编码格式,要与你的文件的编码格式相同,不然会出现乱码
            //标准的字节流,按照一定的编码格式,转换为字符流。如果读取字符流的时候,使用的是系统默认的编码格式,(微软的一般是GBK)
			//则直接使用fileReader和fileWriter。如果需要指定编码格式,则使用inputStreamReader和OutputStreamWrite
            bufferedReader = new BufferedReader(isr);
            while ((line = bufferedReader.readLine())!= null){
                System.out.println(line);
            }
        }catch (FileNotFoundException e){
            System.err.println(e.getMessage());
            e.printStackTrace();
        }catch (IOException e) {
            System.err.println(e.getMessage());
            e.printStackTrace();
        }finally {
            try {
                reader.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
       
    }
}

补充:
1.上传文件路径为什么要双斜杠?
解析:由于我们是把路径当成是一个字符串传进去的,在字符串中斜杠“\”被当做转义字符识别,所以要用“\(这里是两个斜杠,可能显示出来是一个)”才能表示一个斜杠。
2.要指定文件格式吗?
解析: 标准的字节流,按照一定的编码格式,转换为字符流。如果读取字符流的时候,使用的是系统默认的编码格式,(微软的一般是GBK),则直接使用fileReader和fileWriter。如果需要指定编码格式,则使用inputStreamReader和OutputStreamWrite 。



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!