我有一个Java程序,可以搜索您的cookie文件,然后将每个文件保存到一个数组中。然后我尝试在每个文件中搜索某个字符串,但是当我尝试搜索我知道存在的文件时,java告诉我他们没有。有什么想法吗?
到目前为止,这是我的代码:
import java.io.*;
import java.util.*;
public class CheckCookie
{
static String[] textFiles = new String[100];
static String userName = "";
public static void findCookies()
{
String path = "pathtocookies";
String files;
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++)
{
if (listOfFiles[i].isFile())
{
files = listOfFiles[i].getName();
if (files.endsWith(".txt") || files.endsWith(".TXT"))
{
textFiles[i] = files;
}
}
}
}
public static boolean searchCookies()
{
for(int j = 0; j < textFiles.length; j++) {
String path2 = "pathtocookies"+textFiles[j];
File file = new File(path2);
try {
Scanner scan = new Scanner(file);
while (scan.hasNext()) {
String line = scan.nextLine();
if(line.contains("ineligible_age")) {
System.out.println("A cookie for ineligible age was set.");
return true;
}
}
}
catch(FileNotFoundException e) {
System.out.println("File was not found.");
return false;
}
}
System.out.println("A cookie for ineligible age was not set.");
return false;
}
public static void main(String[] args)
{
findCookies();
searchCookies();
System.out.println();
System.out.println("Finished searching for cookies. Yum.");
}
}
实际路径:
C:/Users/lucas.brandt/AppData/Roaming/Microsoft/Windows/Cookies
答案 0 :(得分:4)
使用List而不是数组来存储textFiles。
想象一个包含2个文件的目录。第一个是“abc.doc”,第二个是“itsme.txt”
您的textFiles数组将如下所示:
因此,您尝试访问“pathtocookies”+“null”,这将失败,您将转到catch并返回该函数。
进一步提示:
更多提示取决于实际用例。
- TB
答案 1 :(得分:3)
在这一行:
String path2 = "pathtocookies"+textFiles[j];
您缺少目录名称和文件名之间的文件分隔符。 java.io.File有一个构造函数,它将父路径和文件名作为单独的参数。您可以使用它或插入File.separator:
String path2 = "pathtocookies" + File.separator + textFiles[j];
您还在拾取阵列中的目录。在尝试扫描之前检查它是否为文件。
另外,请考虑另一个答案,即将文件保存在List中,从而删除目录。
答案 2 :(得分:0)
files = listOfFiles[i].getName();
尝试更改为
files = listOfFiles[i].getAbsolutePath();
修改强>
你也可以直接启动一个File(而不是String)数组,
并且您必须使用.canRead()
方法来验证文件访问权限。
答案 3 :(得分:0)
为什么不将File
个实例存储在File[]
或List<File>
?
我认为当你做很多字符串连接时,你也会从使用StringBuilder中受益......