2011-12-11 7 views
1

メインのクラスに読み込みtxtファイルを取得するにはどうすればよいですか?Scannerを使用するクラスの変数をメインクラスに渡すにはどうすればよいですか?

//main class 
public class mainClass { 

public static void main(String[]args) { 
    load method = new load("Monster"); 
} 
} 





//scanner class 

public class load { 

    public static void loader(String... aArgs) throws FileNotFoundException { 
    load parser = new load("resources/monsters/human/humanSerf.txt"); 
    parser.processLineByLine(); 
    log("Done."); 
    } 

    public load(String aFileName){ 
    fFile = new File(aFileName); 
    } 

    public final void processLineByLine() throws FileNotFoundException { 
    //Note that FileReader is used, not File, since File is not Closeable 
    Scanner scanner = new Scanner(new FileReader(fFile)); 
    try { 
     //first use a Scanner to get each line 
     while (scanner.hasNextLine()){ 
     processLine(scanner.nextLine()); 
     } 
    } 
    finally { 

     scanner.close(); 
    } 
    } 

    public void processLine(String aLine){ 
    //use a second Scanner to parse the content of each line 
    Scanner scanner = new Scanner(aLine); 
    scanner.useDelimiter("="); 
    if (scanner.hasNext()){ 
     String name = scanner.next(); 
     String value = scanner.next(); 
     log("Stat is : " + quote(name.trim()) + ", and the value is : " + quote(value.trim())); 
    } 
    else { 
     log("Empty or invalid line. Unable to process."); 
    } 
    } 

    public final File fFile; 

    public static void log(Object aObject){ 
    System.out.println(String.valueOf(aObject)); 
    } 

    public String quote(String aText){ 
    String QUOTE = "'"; 
    return QUOTE + aText + QUOTE; 
    } 
} 

メインクラスからどのメソッドを呼び出すか、ファイルからテキストを取得するには、そのメソッドからどの変数を返すかを指定します。もし誰かが私がスキャナーを学ぶのを助けることができるウェブサイトを持っていれば(インターネットのこのソースコードを入手して、JavaPractisesと太陽のチュートリアルからそれを理解するだけです)それはすばらしいでしょう。おかげ

答えて

0

まず、あなたはおそらくJava naming conventions標準フォローしたい - ではなくmainClasspublic class MainClassを使用しています。

第2に、あなたの方法では、publicが特定の目的を持っています。 hereおよびhereを参照してください。一般的に、必要に応じてメソッドをpublicとラベル付けする必要があります(専門用語ではカプセル化と呼ばれます)。あなたの質問のために

からLoadクラスでは、あなたがファイルからStringにすべてのテキストを追加し、そして時に呼び出されることを返しますLoadpublicゲッターメソッドを追加することができます。

Loadの開始時にこれを追加します。

public class Load { 
    private String fileText; 
    // ... rest of class 

そしてLoadクラスにこのgetterメソッドを追加します。はい、fileTextを単にpublicとマークできますが、それはオブジェクト指向プログラミングの目的に反します。

public getFileText(String aFileName){ 
    return fileText; 
} 

最後に、この新しい方法をlogに使用します。 Objectを使用する必要はありません。あなたは今、私は配列を試してみましたが、既存の方法でそれを立ち往生、この1つは動作するはずmethod.getFileText()

0

コードありTLた。あなたはloadクラスの.txtファイルからのデータのすべてを取得したい場合はDR

、あなたは行を取得するにはload方法を記述する必要があります。このような何かが働くだろう:

public String[] getFileAsArray() { 
    ArrayList<String> lines = new ArrayList<String>(); 
    Scanner in = new Scanner(fFile); 

    while(in.hasNextLine()) 
    lines.add(in.nextLine(); 

    String[] retArr = new String[lines.size()]; 

    return lines.toArray(retArr); 
} 
+0

を呼び出すことで、メインクラスに読み出したファイルを取得することができます

private static void log(String line) { System.out.println(line); fileText += aObject; } 

関連する問題