[英]while loop and printwriter only writes one line to file
我编写了一个代码,该代码从文件夹中的不同文件中获取大量数据,然后确保只在文件中查找某种单词。 然后,确保代码在控制台中打印出结果。
到目前为止,我所做的所有工作都可以正常运行,但是问题来了。 我希望代码也将信息打印/写入.txt文件。 这种工作方式,但是它只打印来自不同文件的许多行之一。 我完全可以肯定,控制台打印出的数字不止一个,而且显示了至少20条包含正确单词的不同行。 我不能完全确定哪里出了问题,我还尝试添加.flush();
就在.close();
之前.close();
但它仍然无法正常工作。 我也尝试添加pToDocu.close();
在sc.close();
下面sc.close();
,但这也不起作用,因为它甚至不写任何东西,只会创建一个空白文件。
简而言之,该代码应该写很多行,但只能写一行。
public static void lisFilesF(final File folderV) throws IOException {
PrintWriter pTD = new PrintWriter("eFile.txt");
for (final File fileEntry : folderV.listFiles()) {
if (fileEntry.isDirectory()) {
listFilesForFolder(fileEntry);
} else {
System.out.println(fileEntry.getName());
try {
Scanner sc = new Scanner(fileEntry);
while (sc.hasNextLine()) {
String s = sc.nextLine();
if(s.contains("@"))
{
System.out.println(s);
pTD.println(s);
pTD.close();
}
}
sc.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
我已经更改了代码,现在有了pTD.close();
在while循环之外,如下所示。 唯一的问题是现在创建的文件为空白,其中没有任何信息。
public static void lisFilesF(final File folderV) throws IOException {
PrintWriter pTD = new PrintWriter("eFile.txt");
for (final File fileEntry : folderV.listFiles()) {
if (fileEntry.isDirectory()) {
listFilesForFolder(fileEntry);
} else {
System.out.println(fileEntry.getName());
try {
Scanner sc = new Scanner(fileEntry);
while (sc.hasNextLine()) {
String s = sc.nextLine();
if(s.contains("@"))
{
System.out.println(s);
pTD.println(s);
}
}
sc.close();
pTD.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
第一次写入文件后,您将关闭文件( pTD
)。 您应该从循环中提取close()
调用,然后将其移动:
Scanner sc = new Scanner(fileEntry);
while (sc.hasNextLine()) {
String s = sc.nextLine();
if(s.contains("@")) {
System.out.println(s);
pTD.println(s);
}
}
sc.close();
pTD.close();
去掉
pTD.close();
从您的while循环中。 您在第一次写入后关闭Print Writer
编写器
看来您想将所有这些记录提交到PrintWriter
。 因此,您的pTD.close();
必须在for循环之外,因为您在for循环之前声明了PrintWriter。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.