openplanning

Hướng dẫn và ví dụ Java StringReader

  1. StringReader
  2. Examples

1. StringReader

Lớp StringReader được sử dụng để đọc một String theo phong cách của một luồng đầu vào ký tự (character input stream).
Về cơ bản, StringReader là lớp con của Reader. Nó không có các phương thức nào khác ngoài các phương thức được thừa kế từ lớp cha của nó. Vì vậy bạn có thể đọc bài viết về Reader để tìm hiểu thêm về các phương thức này.
StringReader constructor
public StringReader(String s)

2. Examples

Ví dụ: Đọc một văn bản, liệt kê các chữ xuất hiện trong văn bản và số lần xuất hiện của mỗi chữ.
  • Hướng dẫn và ví dụ Java StreamTokenizer
StringReaderEx2.java
package org.o7planning.stringreader.ex;
 
import java.io.IOException;
import java.io.Reader;
import java.io.StreamTokenizer;
import java.io.StringReader;
import java.util.HashMap;
import java.util.Map;

public class StringReaderEx2 {

    public static void main(String[] args) throws IOException {
        String s = "Apple Apricots Apricots Blackberries Apple";
        
        Reader reader = new StringReader(s);
        StreamTokenizer tokenizer = new StreamTokenizer(reader); // StreamTokenizer(Reader)
        
        // <String word, int count>
        Map<String, Integer> wordsMap = new HashMap<>();
        
        // Read and count the frequency for every word.
        while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {
            if (tokenizer.ttype == StreamTokenizer.TT_WORD) {
                int count;
                 
                if(wordsMap.containsKey(tokenizer.sval)) {
                    count = wordsMap.get(tokenizer.sval).intValue();
                    count++;
                }
                else {
                    count = 1;
                }
                wordsMap.put(tokenizer.sval, count);
            }
        }
        
        wordsMap.forEach((word, count) -> {
            System.out.println(word + " : " + count);
        });
    }
}
Output:
Apple : 2
Apricots : 2
Blackberries : 1
Ví dụ: Đọc một văn bản gồm nhiều dòng, in ra các dòng kết thúc bởi chữ "B", và không bắt đầu bởi chữ "#" (Dòng chú thích).
StringReaderEx3.java
package org.o7planning.stringreader.ex;

import java.io.BufferedReader;
import java.io.Reader;
import java.io.StringReader;

public class StringReaderEx3 {

    public static void main(String[] args) {
        String students = //
                "# Students:\n" //
                        + "John P\n" //
                        + "Sarah M\n" //
                        + "# Sarah B\n" //
                        + "Charles B\n" //
                        + "Mary T\n" //
                        + "Sophia B\n";

        Reader reader = new StringReader(students);

        BufferedReader br = new BufferedReader(reader);

        br.lines() // return java.util.stream.Stream
                .filter(s -> !s.trim().startsWith("#")) // Line not start with #
                .filter(s -> s.endsWith("B")) // Line ends with B
                .forEach(System.out::println);

    }
}
Output:
Charles B
Sophia B

Các hướng dẫn Java IO

Show More