FileInputStream来读取,完全没有问题,他是读取字节形式的,所以读到中文字符的时候,字节流就会出现乱码,所以必去用要字符流来读取,在用FileInputStream读取文件是用他里面read()方法来读取的,是一口气直接全部读完的,就会留下原来文件换行的脚印。

但这里使用的是BufferedReader。BufferedReader来读取是用readLine()来读取的,意思是一行一行的来读取,这样当读到回车符的时候,就先返回给字符串,然后再进行下一行的读取!

代码如下:

package com.nickwong.code;

import java.io.*;


public class ReadTxt {

    public static void main(String args[]) {
        readFile();
        writeFile();
    }

    /**
     * 读入TXT文件
     */
    public static void readFile() {
        String pathname = "input.txt"; // 绝对路径或相对路径都可以,写入文件时演示相对路径,读取以上路径的input.txt文件
        //防止文件建立或读取失败,用catch捕捉错误并打印,也可以throw;
        //不关闭文件会导致资源的泄露,读写文件都同理
        //Java7的try-with-resources可以优雅关闭文件,异常时自动关闭文件;
        try (FileReader reader = new FileReader(pathname);
             BufferedReader br = new BufferedReader(reader) // 建立一个对象,它把文件内容转成计算机能读懂的语言
        ) {
            String line;
            while ((line = br.readLine()) != null) {
                // 一次读入一行数据
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 写入TXT文件
     */
    public static void writeFile() {
        try {
            File writeName = new File("output.txt"); // 相对路径,如果没有则要建立一个新的output.txt文件
            writeName.createNewFile(); // 创建新文件,有同名的文件的话直接覆盖
            try (FileWriter writer = new FileWriter(writeName);
                 BufferedWriter out = new BufferedWriter(writer)
            ) {
                out.write("我会写入文件啦1\r\n"); // \r\n即为换行
                out.write("我会写入文件啦2\r\n"); // \r\n即为换行
                out.flush(); // 把缓存区内容压入文件
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

NB: 1.如果读取的文件是这样的。也就是第二行的位置有个空格。如果想在这里停止,并对上面的内容进行处理的时候,判定是

line.equals(" ");//有个空格

java读file内容 java filereader读取txt文件_字符串

2.如果读取的文件是下面的形式,那么使用下面的语句,就可以得到第二行的位置。但是最后文本的结束还是使用null判定。

line.equals("");// 中间是什么都没有,但是和null是两个含义

java读file内容 java filereader读取txt文件_相对路径_02

3. null 和空的区别

一般情况下 . java中的null就是指的空 . 但是稍微注意的是 空字符串"" 和null是有区别的 "" 代表有字符串, 但是字符串内容为空, 长度为0 null表示对象为空 如果用为null的对象去调用方法, 就会出现空指针异常

 

 

参考:


https://wenwen.sogou.com/z/q809605039.htm