标签:读取 ati end string lse ring rgs nbsp 数据
readLine() 一次读一行的原理: 无论是读一行,或者读取多个字符,其实最终都是在硬盘上一个一个读取
所以最终使用的还是read()方法,一个读一个的方法。
package CoreJavaPractice; import java.io.*; public class Practice_1 { public static <K, V> void main(String[] args) throws IOException { FileReader fr = new FileReader("PracticeUse.java"); MyBufferedReader mybuf = new MyBufferedReader(fr); String line = null; while((line=mybuf.myReadLine())!=null) { sop(line); } mybuf.myClose(); } public static void sop(Object obj) { System.out.println(obj); } } /* 明白了BufferedReader类中特有的方法readLine的原理后 自己搞一个:来模拟一下 readLine,其实也是调用了read方法 */ class MyBufferedReader { private FileReader r; MyBufferedReader(FileReader r) { this.r = r; } public String myReadLine() throws IOException { // 定义一个临时容器,原BufferedReader中封装的是一个字符数组 // 为了演示方便。定义一个StringBuilder容器。最终还是要将数据变成字符串。 StringBuilder sb = new StringBuilder(); int ch = 0; while((ch=r.read())!=-1) { if(ch==‘\r‘) { continue; } if(ch==‘\n‘) { return sb.toString(); }else { sb.append((char)ch); } } if(sb.length()!=0) { return sb.toString(); } return null; } public void myClose() throws IOException { r.close(); } }
标签:读取 ati end string lse ring rgs nbsp 数据
原文地址:https://www.cnblogs.com/zxl1010/p/11491414.html