【发布时间】:2016-11-20 22:34:42
【问题描述】:
我想要实现的基本上是一个 Java 文件,它查看用户计算机上的特定目录,在目录中的所有文件中搜索特定单词(在本例中为电子邮件),然后最后将它们打印出来.
我现在拥有的当前脚本在某个目录中查找所有文件,并打印出这些文件名。除此之外,我还想出了如何让该脚本在一个文件中搜索特定单词,然后将其打印出来。唯一的问题是,尽管它搜索了那个文件并获得了那个词/短语,但它必须得到完整的目录和文件才能工作。我只希望它有一个特定的目录,然后搜索其中的所有文件。我尝试使用我创建的目录变量来查找所有文件,但是当使用它作为文件的目录来搜索以查找单词时,它不起作用。
下面是我的代码部分,用于我想要的功能。实际函数是在我的真实脚本中调用的,所以不要担心它正在工作。我也刚刚在脚本中注释了我想在哪里工作的变量。
package aProject;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class aScanner {
static String usernameMac = System.getProperty("user.name");
final static File foldersMac = new File("/Users/" + usernameMac + "/Library/Mail/V2"); // this is the right directory I want to look through
public static void listFilesForFolder(final File foldersMac) {
for (final File fileEntry : foldersMac.listFiles()) {
if (fileEntry.isDirectory()) {
listFilesForFolder(fileEntry);
try {
BufferedReader bReaderM = new BufferedReader(new FileReader("/Users/username/Library/Mail/V2/AosIMAP-/INBOX.mbox/longnumber-folder/Data/Messages/1.emlx")); //this is where I would like the foldersMac variable to work in, instead of this full directory
String lineMe;
while((lineMe = bReaderM.readLine()) != null)
{
if(lineMe.contains(".com"))
System.out.println(lineMe);
}
bReaderM.close();
}
catch (IOException e) {
}
} else {
System.out.println(fileEntry.getName());
}
}
}
}
【问题讨论】:
-
不要忘记关闭该阅读器,以防出现 az IOException 或任何其他行为。我宁愿把 .close() 方法放在 finally 块中。
标签: java file printing bufferedreader filereader