人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ファイルに記載している内容をそのまま(改行もそのまま認識して)javaの中に読み込みたいのですが可能でしょうか?
javaまったくの初心者のためまったくわかりません。
分かる方、お願い致します。

長くなるので詳細はコメントに書きます。

●質問者: Ryo0524
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Java コメント ファイル 初心者 認識
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● km1967
●0ポイント

FileInputStreamを使えばできます。

下記参照

http://www.tohoho-web.com/java/file.htm


2 ● aside
●0ポイント

読み込み用の簡単なクラスです

import java.io.*;
public class data {
public static void main(String[] args){
String naiyo;
try{
FileReader file = new FileReader("C:/data.txt");
BufferedReader br = new BufferedReader(file);
while((naiyo = br.readLine()) != null ){
System.out.println(naiyo);
}
br.close();
file.close();
} catch (IOException e) {
System.out.println(e);
}
}
}

3 ● kn1967
●500ポイント ベストアンサー

以下、一例。

(パターンa)

data.txtファイルの例

title=株式会社○○○ 10月度メールマガジン
naiyo<<<end
今月の特集は紅葉の名所特集です。
今年は○○市では11月中旬が見ごろになるでしょう。
そこで、○○市の紅葉スポットを調査してきました!!

○○公園
○○○川周辺
end

※ <<<end は end で始まる行まで連続で読み続けろという意味で使ってます。

本文内容にあわせてend以外の文字列に変えてもプログラム側の変更はありません。

import java.io.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

class textSplitReader2 {
 public static void main(String[] args) throws IOException {
 BufferedReader br1 = new BufferedReader(new FileReader("data.txt")); // ファイルストリーム準備
 Pattern ps1 = Pattern.compile("^title\\s*=(.+)\\s*"); // テキスト検索パターン生成
 Pattern ps2 = Pattern.compile("^naiyo\\s*<<<\\s*(.+)\\s*"); // テキスト検索パターン生成
 String mailTitle = ""; // ファイル読み込み用
 String mailBody = ""; // ファイル読み込み用
 String mailBodyEndMark = ""; // 終端文字格納用(<<<end ならendが入る)
 String rs; // ファイル読み込み用
 while ((rs = br1.readLine()) != null) {
 Matcher m1 = ps1.matcher((String)rs); // titleパターンを当ててみる
 if(m1.find()) { // パターンにマッチした場合の処理
 mailTitle = (String)m1.group(1); // パターンから抽出
 } else {
 Matcher m2 = ps2.matcher((String)rs); // 本文の開始位置かどうかパターン当てててみる
 if(m2.find()) { // パターンにマッチした場合の処理
 mailBodyEndMark = (String)m2.group(1); // パターンから抽出
 while ((rs = br1.readLine()) != null) {
 if (rs.startsWith(mailBodyEndMark)) { // mailBodyEndMark で書き始められていたらループを抜ける。
 break;
 }
 mailBody += rs;
 }
 }
 }
 }
 // 以下、テスト出力
 System.out.print("----title----" + System.getProperty("line.separator"));
 System.out.print(mailTitle + System.getProperty("line.separator"));
 System.out.print("----body----" + System.getProperty("line.separator"));
 System.out.print(mailBody);
 System.out.print("----end----" + System.getProperty("line.separator"));
 }
}

(b)一行目がタイトルで、以降が本文の場合

data.txtファイルの例

株式会社○○○ 10月度メールマガジン
今月の特集は紅葉の名所特集です。
今年は○○市では11月中旬が見ごろになるでしょう。
そこで、○○市の紅葉スポットを調査してきました!!

○○公園
○○○川周辺
import java.io.*;
class textSplitReader3 {
 public static void main(String[] args) throws IOException {
 BufferedReader br = new BufferedReader(new FileReader("data.txt")); // ファイルストリーム準備
 String mailTitle = br.readLine(); // タイトル読み込み
 String mailBody = ""; // 本文準備
 String rs; // ファイル読み込み用
 while ((rs = br.readLine()) != null) { // 本文読み込み
 mailBody += rs; // 追記
 }
 // 以下、テスト出力
 System.out.print("----title----" + System.getProperty("line.separator"));
 System.out.print(mailTitle + System.getProperty("line.separator"));
 System.out.print("----body----" + System.getProperty("line.separator"));
 System.out.print(mailBody);
 System.out.print("----end----" + System.getProperty("line.separator"));
 }
}
◎質問者からの返答

すごく参考になりました。

おかげで完成しました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ