java文本文件读取方式_java学习笔记之文本文件的读取方式

文件通过FileWriter这个对象创建成功,并成功往里写进了数据。

那么,如何读取数据?

文本文件的读取方式: 读取单个字符

首先,我们有一个txt文件,写入内容为"abcdefg",先看看单个字符的读取吧。import java.io.*; public class FileReaderDemo { public static void main(String[] args) throws IOException { //1.创建一个文件读取流对象,和指定名称的文件相关联。 //要保证该文件已存在,若不存在则会发生异常 FileReader fr = new FileReader("demo.txt"); //2.调用读取流对象的read方法。 int ch=fr.read(); System.out.println("ch="+(char)ch); fr.close(); } }

这里,运行结果为:“ch=a”。

read();:一次读一个字符,并且会自动往下读。返回整数读取的字符,如果已到流的末尾,则返回-1。

如果要读出全部字符,可以多实现几次。当等于-1时停止循环。

即: import java.io.*; public class FileReaderDemo { public static void main(String[] args) throws IOException { FileReader fr = new FileReader("demo.txt"); while(true) { int ch=fr.read(); if(ch==-1) break; System.out.println("ch="+(char)ch); } fr.close(); } }

或: import java.io.*; public class FileReaderDemo { public static void main(String[] args) throws IOException { FileReader fr = new FileReader("demo.txt"); int ch=0; while((ch=fr.read())!=-1) { System.out.println("ch="+(char)ch); } fr.close(); } } 读入数组

返回读取字符数,如果到达流的末尾,返回-1。import java.io.*; public class FileReaderDemo2 { public static void main(String[] args) throws IOException { FileReader fr = new FileReader("demo.txt"); //定义一个字符数组,用于存储读到字符。 char[] buf=new char [3]; //把流关联的数据读一个存到数组中 int num=fr.read(buf); System.out.println("num="+num+"..."+new String(buf)); fr.close(); } }

运行结果为:num=3…abc

原因:数组长度只有3,所以读到第三个之后就不再读了。

如果再加一个: int num1=fr.read(buf); System.out.println("num1="+num1+"..."+new String(buf));

则运行结果为:

num=3…abc

num1=3…def

如果再加一个: int num2=fr.read(buf); System.out.println("num2="+num2+"..."+new String(buf));

则运行结果变为了:

num=3…abc

num1=3…def

num2=1…gef

怎样避免这种情况呢?

应为: import java.io.*; public class FileReaderDemo2 { public static void main(String[] args) throws IOException { FileReader fr = new FileReader("demo.txt"); char[] buf=new char [3]; int num=0; while((num=fr.read(buf))!=-1) { System.out.println(new String(buf,0,num)); //截取有效位 } fr.close(); } }

如果文件很大,那么一般数组的长度为1024的整数倍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值