这个很有趣。我很感激任何帮助,之前没有任何stackoverflow问题指向我正确的位置。文档对我也没什么帮助。
我被这个代码块抛出了FileNotFoundException:
public static int wordOccurance(Word t, File D) throws FileNotFoundException
{
int occurance = 0;
BufferedReader mainReader = new BufferedReader(new FileReader(D));
Scanner kb = new Scanner(mainReader);
我的测试人员文件不会导致这种情况发生:即。 "文件测试器=新文件(" C:\ read.txt");"
但问题仅在我传递由此方法构造的文件时发生:
public static File makeAndCombineFile(String FileOne, String FileTwo) throws IOException
{
BufferedReader mainReader = null;// null holder value for the later useful bufferedReader
Scanner kb = null;// null holder for later useful Scanner
StringBuilder sb = new StringBuilder();
这两个CHUNK之间的其他条件。最可能不是很重要。如果一个输入为空,则返回文件。
else //in case both are good to go and obviously not null
{
mainReader = new BufferedReader(new FileReader(FileOne));
kb = new Scanner(mainReader);
while(kb.hasNext())
sb.append(kb.nextLine() + "\n");
mainReader = new BufferedReader(new FileReader(FileTwo));
kb = new Scanner(mainReader);
while(kb.hasNext())
sb.append(kb.nextLine()+ "\n");
kb.close();
return new File(sb.toString());
}
}
答案 0 :(得分:0)
我花了一些时间来弄清楚这里发生了什么,但它看起来像你认为这一行:
return new File(sb.toString());
在磁盘上创建一个文件,其中包含从两个扫描仪读取的文本。 它没有。它创建一个java.io.File
,它基本上是文件路径的表示;此File
表示的路径是从扫描仪读取的数据。换句话说,如果FileOne和FileTwo包含 War and Peace 的文本,那么该文件所代表的路径将是 War and Peace 的文本。该文件不会在磁盘上创建;没有数据写入它。您刚刚创建了一个引用不存在的文件的对象。
使用FileWriter
,或许与PrintWriter
一起使用,将文本行保存到文件中;然后你可以创建一个包含该文件名称的File
对象,并将其传递给你的其他例程:
PrintWriter pw = new PrintWriter(new FileWriter("somename.txt"));
while(kb.hasNext())
pw.println(kb.nextLine());
pw.close();
return new File("somename.txt");