-1

次のように設定されたテキストファイルがあります

Title - Welcome to the Dibb
Date - 13/03/11
Information - Hello and welcome to our website.

Title - Welcome to student room
Date - 06/05/11
Information - Hello and welcome to the student room. We are a online forum that allows previous and current students to ask questions. 

このテキストファイルを解析して、タイトル行、日付行などを保存する必要があります。残りは情報として保存されます。ファイルを読み取り、ファイル全体を文字列として保存する方法を知っていますが、選択した情報を取得するのに行き詰まっています。

コード

これは私がテキストファイルを読むために使用したコードです

helloTxt.setText(readTxt());



}

private String readTxt() {

    InputStream inputStream = getResources().openRawResource(R.raw.pages);

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

    int i;
    try {
        i = inputStream.read();
        while (i != -1) {
            byteArrayOutputStream.write(i);
            i = inputStream.read();
        }
        inputStream.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    String str = byteArrayOutputStream.toString();

    return str;

}
4

2 に答える 2

1

ファイルを 1 行ずつ読み取る

BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
   // process the line.
}
br.close();

すべての行に最大の行があることを保証できる場合は-、次のパターンを使用できます。

String[] tokens = line.split("\s-\s");

この行について

タイトル - ディブへようこそ

それはあなたを与えるだろう

tokens[0] = "Title";
tokens[1] = "Welcome to the Dibb";
于 2012-12-19T13:25:56.020 に答える
0

問題にアプローチするのに役立ついくつかのクラスを作成しようとしています

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

public class Test4 {

    private List<Information> parser(String data) {

        List<Information> informations = new ArrayList<Information>();
        String blocks[] = data.split("\n\r");

        for(String block : blocks) {
            String[] lines = block.split("\n");
            Information information = new Information();
            information.setTitle((lines[0].split("-"))[1].trim());
            information.setDate((lines[1].split("-"))[1].trim());
            information.setInfo((lines[2].split("-"))[1].trim());
            informations.add(information);
        }

        return informations;
    }

    private  void runner() throws IOException {
        InputStream inputStream = getClass().getResourceAsStream("input.txt");
        String input = "";
        int cc;
        while((cc = inputStream.read()) != -1) {
            input += (char) cc;
        }

        List<Information> informations = parser(input);
        for(Information information : informations) {
            System.out.println(information);
        }

    }

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        Test4 test4 = new Test4();
        test4.runner();
    }

    class Information {

        private String title;

        private String date;

        private String info;

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        public String getDate() {
            return date;
        }

        public void setDate(String date) {
            this.date = date;
        }

        public String getInfo() {
            return info;
        }

        public void setInfo(String info) {
            this.info = info;
        }

        @Override
        public String toString() {
            return "Information [" + (title != null ? "title=" + title + ", " : "")
                    + (date != null ? "date=" + date + ", " : "") + (info != null ? "info=" + info : "") + "]";
        }

    }

}
于 2012-12-19T13:51:53.763 に答える