网站首页 美食营养 游戏数码 手工爱好 生活家居 健康养生 运动户外 职场理财 情感交际 母婴教育 生活知识 生活百科 知识问答 更多知识

java IO流文件的输入流具体实例解析(一)

时间:2026-02-25 03:38:16

1、网上找来的实例

import java.io.*;

public class ReadFile

{

public static void readFileByChars(String fileName) {

File file = new File(fileName);

Reader reader = null;

        try { 

            reader = new InputStreamReader(new FileInputStream(file));

            int tempchar;

            

            while ((tempchar = reader.read()) != -1) {

            

                if (((char) tempchar) != '\r') {

                    System.out.print((char) tempchar);

                }

            }

            reader.close();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

   public static void main(String args[]) throws IOException

   {

  String path="D:\\f.txt";

  ReadFile rf=new ReadFile();

  rf.readFileByChars(path);

   }

}

同时在D盘根目录新建一个f.txt文件

内容为:

一二三四五六七八九十零

一二三四五六七八九十零

一二三四五六七八九十零

一二三四五六七八九十零

一二三四五六七八九十零

一二三四五六七八九十零

一二三四五六七八九十零

一二三四五六七八九十零一二三四五六七八九十零一二三四五六七八九十零

java IO流文件的输入流具体实例解析(一)

java IO流文件的输入流具体实例解析(一)

2、接下来我们用eclipse运行程序,运行成功并得到一下结果,读取是正常的

java IO流文件的输入流具体实例解析(一)

3、接着我们分析一下程序的一些语句,先从主函数main(String args[])看起

 String path="D:\\f.txt";

这句是定义一个字符变量存储文件的路径

 ReadFile rf=new ReadFile();

 ReadFile就是程序本身的主类,定义rf调用程序的函数

 rf.readFileByChars(path);

 readFileByChars就是程序定义的一个函数

java IO流文件的输入流具体实例解析(一)

4、接下来看函数readFileByChars(String fileName)

File file = new File(fileName);

Reader reader = null;

定义并初始化了读取文件需要的变量,File,Reader都是java的类,File类是文件对象,Reader类是所有字符输入的父类

 try catch (Exception e)

是当发生错误时捕捉错误的语句

java IO流文件的输入流具体实例解析(一)

5、reader = new InputStreamReader(new FileInputStream(file));

Reader类是所有字符输入的父类,

FileInputStream类就是把文件按照字节读入,

InputStreamReader类就是把读入的字节转化为字符,

语句的意思就是把文件按照字节读入后,再转成字符,再赋值给reader,

int tempchar;

定义一个整型变量,作为读取的字符的暂存变量

java IO流文件的输入流具体实例解析(一)

6、 while ((tempchar = reader.read()) != -1)

while是while循环,tempchar是读取的字符的暂存变量, reader.read()的表示读取文件一个字符,并返回这个字符的数值,read()读到文件没有字符可读时会返回-1

所以条件的意思是读取文件字符,并返回给tempchar,直到读到文件尾没有字符时,条件就为false结束循环

java IO流文件的输入流具体实例解析(一)

7、 if (((char) tempchar) != '\r') {

                    System.out.print((char) tempchar);

                }

if是条件判断,(char) 是强制类型转换为字符型,((char) tempchar)把字符的值转换为字符,'\r'是换行字符, System.out.print((char) tempchar);是输出字符

这个语句的意思是除开'\r'这个字符,其他字符都输出,

为什么要屏蔽'\r'呢?原因是windows文件换行结尾是\r\n这两字符,读取文件时也会一起读进来,如果这个两个字符一起输出或者连续输出是换一行,但如果分开不连续输出就是换两行,屏蔽'\r'是为为了避多出来的行

reader.close();

最后读完后把字符流关闭了

 e.printStackTrace();

是输出发生错误时错误

java IO流文件的输入流具体实例解析(一)

8、最后我试一下如果不写 if (((char) tempchar) != '\r')这个判断语句会怎么样,

结果是毫无变化,因为程序是一一个字符连续输出,\n\r不会出现分开不连续输出的情况,所以不会有变化。

当然可能在非windows编译环境会多出一行。

java IO流文件的输入流具体实例解析(一)

© 2026 海能知识库
信息来自网络 所有数据仅供参考
有疑问请联系站长 site.kefu@gmail.com