javaベース-Readerのresetはファイルヘッダにリセットされます。

1640 ワード

Readerのreset方法テスト      
         今日はCSDNのクイズチャンネルで問題を見ました。一つのBufferedReaderを読み終わったら、再びファイルのヘッダに戻ってもう一度読みます。改めてnewのBufferedReaderを考えましたが、APIを調べてみると、resetの方法があります。しかし、markと一緒に使います。
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class MapCheck {
	public static void main(String[] args) {
		try {
			File file = new File("D:/Test.java");
			MyBufferedReader reader = new MyBufferedReader(new FileReader(file));
			String content=reader.readLine();
			reader.mark((int)file.length());
			while(content!=null){
				System.out.println(content);
				content=reader.readLine();
			}
			
			reader.reset();
			content=reader.readLine();
			while(content!=null){
				System.out.println(content);
				content=reader.readLine();
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
        テストでは、Markは最初にreadlineを実行した後に呼び出してこそ、ファイルの先頭に戻って読み取りを再開することができます。他のreadLineのところに置くと、読めないのはファイルの内容です。一体なぜですか?コード追跡はまだ原因を発見していません。でも、Markとreetの組み合わせの使い方が分かりました。
     文字列のバックスラッシュ'\"を置換します。
         ASKクイズチャンネルでは、もう一つの簡単な文字列が逆平行棒に置き換えられる問題があります。Stringのreplaceとreplace Allの使い方です。しかし、彼らの違いは何ですか?replaceは普通の文字列に置き換えられますが、replace Allの最初のパラメータは正規表現です。正しい実現はreplaceを使うべきです。
		String str = "http://192.168.1.254\\record\\2015Y04M03D14H\\19M00S.mp4?custom=1&cmd=4001"; 
		String newStr = str.replace("\\","/");
		System.out.println(newStr);
       テストされていないコードは、無駄なコードです。簡単な問題だが、テストがないので、憶測してはいけない。