2017-07-04 20 views
0

以下のコードを実行すると、デバイス上の "username.txt"ファイルのサイズが増え続けます。理由は何ですか?ファイルサイズが増え続ける

package files2; 

import java.io.FileNotFoundException; 

import java.io.File; 

import java.io.PrintStream; 

import java.util.Scanner; 

public class extractor { 
public static void main(String[] args)throws FileNotFoundException { 
    Scanner fromFile=new Scanner(new File("emails.txt")); 
    PrintStream toFile=new PrintStream("username.txt"); 
    char symbol; 
    while(fromFile.hasNext()) { 
     symbol=fromFile.findWithinHorizon(".",0).charAt(0); 
     while(symbol !='@') { 
      toFile.print(symbol); 
      symbol=fromFile.findWithinHorizon(".",0).charAt(0); 
     } 
     fromFile.nextLine(); 
     toFile.println(); 
    } 
    fromFile.close(); 
    toFile.close(); 

} 

} 
+0

その理由は、そのファイルに書き込んでいるためです。あなたは何を期待していますか? –

+0

理由は何もないループ –

+0

です。ファイルに書き込むとファイルが増えますが、それはかなり正常です。 – magicleon

答えて

0

あなたは、ファイルへのストリームをオープン

PrintStream toFile=new PrintStream("username.txt"); 

、その後、あなたはそれへの書き込みを保つ:

toFile.print(symbol); 
... 
toFile.close(); 

これは明らかにtoFileのサイズが大きくなります。新しいシンボルや改行が追加されるたびに、ファイルのサイズが大きくなります。

また、hasNextfindWithinHorizonを進めないでください。あなたは本質的に同じ人物を永遠に読んでいる。 next()を使用してスキャナーを進めてください(あなたがしようとするものがあればfindWithinHorizonの後に)。 [ドキュメント] https://docs.oracle.com/javase/8/docs/api/index.html?java/util/Scanner.htmlも参照してください)。

ちょうどnextを使用してください。@を区切り文字として使用してください。

+0

email.txtファイルの終わりになったら、username.txtファイルへの書き込みを止めるには何ができますか? –

+0

@sujanthapa私はあなたが求めているものを見ます、私の編集を参照してください – kabanus

関連する問題