ライン読み取りクラスたTextReaderによってJavaのテキスト行を使用して簡単に

1はじめに

カップリングで強力なを提供を減らすために、Javaのようなので、上のInputStream、OutputStreamの、BufferedStreamとして、非常に豊かで多様なStreamクラスを提供します。パワフルも両刃の剣ではなく、誰もが毎日これらのJavaクラスを使用している、と私は非常によく、それらを覚えて、多くの問題を使用することを忘れませんで。私は多くのことを信じて、私は、使用中に、対応するコードを参照してくださいする必要がありますたびに、人が好き。この問題を解決するために、著者は一般的に使用される機能に応じて、単純なJavaクラスを作成し、テキストのたTextReader行は読みに専念します。

2機能の説明

メインラインは、クラスファイルによって読み取られます。3つのステップに分けたファイルはそれに近い、読み、オープン、読み。

2.1オープン

新たに完成されたオープン時間は、このクラスは、それぞれ、2つのコンストラクタを提供します

// 需要写入的文件名
TextReader(String filename)
// 与上一个相比,增加了字符体,包括 US-ASCII,ISO-8859-1,UTF-8,UTF-16BE,UTF-16LE 和 UTF-16 
TextReader(String filename, String charset)

2.2読書

読み取られた行はユニークな機能を提供しますreadLine()変数を提供しながらEOF、ファイルの終わりかどうかを判断するために。

2.3閉じます

すべての読み取りは、近く開いているファイルのclose()メソッドを呼び出すことを覚えて完成されます。

応用例3

	public static void main(String[] args) throws Exception {
		TextReader tr = new TextReader("D:\\data\\text.txt");
		while (!tr.EOF) {
			System.out.println(tr.readLine());
		}
		tr.close();
	}

ソースコード4

package utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;

/**
 * 日期:2020/02/21
 * 作者:郝伟老师
 * 描述:提供了按行读取一个文本文件的函数,同时支持不同编码格式。
 * 
 */
public class TextReader {
	public boolean EOF;
	String filename;
	String cs;
	RandomAccessFile raf;
	String seperator;
	BufferedReader reader = null;
	String line = null;

	/**
	 * 从一个文本文件中读取内容,默认编码为UTF8.
	 * 
	 * @param filepath 文件路径。
	 * @throws IOException
	 */
	public TextReader(String filename) throws IOException {
		initialize(filename, null);
	}

	/**
	 * 从一个文本文件中读取内容。
	 * 
	 * @param filepath 文件路径。
	 * @param cs 编码格式,可以使用StandardCharsets表示。
	 * @throws IOException
	 */
	public TextReader(String filename, String charset) throws IOException {
		initialize(filename, charset);
	}

	/**
	 * 初始化函数。
	 * @param filename 待打开的文件名。
	 * @param charset 文件集,默认为utf-8
	 * @throws IOException
	 */
	private void initialize(String filename, String charset) throws IOException {
		this.filename = filename;
		this.cs = charset == null || charset.length() == 0 ? "utf-8" : charset;
		this.reader = new BufferedReader(new InputStreamReader(new FileInputStream(filename), cs));
		this.line = reader.readLine();
		this.EOF = line == null; 
	}

	/**
	 * 读取文件中的一行。
	 * @return
	 * @throws IOException
	 */
	public String readLine() throws IOException {
		String s = line;
		line = reader.readLine();
		EOF = line == null;
		return s;
	}

	/**
	 * 关闭当前文件。
	 * @throws IOException
	 */
	public void close() throws IOException {
		reader.close();
	}

	/**
	* 读取指定文件的所有内容。
    * @param filename 待打开的文件名。
	* @param charset 文件集,默认为utf-8
	*/
	public static String readAllLines(String filename, String charset) throws IOException{
		StringBuilder sb = new StringBuilder();
		TextReader tr = new TextReader(filename, charset);
		while (!tr.EOF) {
			sb.append(tr.readLine());
			sb.append("\r\n"); // Linux 可改成 '\n'
		}
		tr.close();
		return sb.toString();
	}
}
公開された324元の記事 ウォン称賛91 ビュー180 000 +

おすすめ

転載: blog.csdn.net/weixin_43145361/article/details/104434456