2017-07-04 82 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后)。另请参阅[documentations] https://docs.oracle.com/javase/8/docs/api/index.html?java/util/Scanner.html)。

请注意,只需使用next就足够了,使用@作为分隔符。

+0

一旦它达到email.txt文件的末尾,我该如何停止写入username.txt文件? –

+0

@sujanthapa我看到你在问什么,看我的编辑 – kabanus