执行以下代码的大小为" 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)
您将流打开到文件
PrintStream toFile=new PrintStream("username.txt");
然后你继续写信:
toFile.print(symbol);
...
toFile.close();
这会明显增加toFile
的大小。每个新符号或新行都会增加文件的大小。
此外,hasNext
和findWithinHorizon
不会推进扫描程序。你基本上是在永远读同一个角色。如果我得到您要执行的操作,请使用next()
推进您的扫描仪(每findWithinHorizon
之后)。另请参阅[文件] https://docs.oracle.com/javase/8/docs/api/index.html?java/util/Scanner.html)。
请注意,使用next
作为分隔符只需使用@
即可。