【问题标题】:FileNotFoundException - The Process cannot access the fileFileNotFoundException - 进程无法访问文件
【发布时间】:2013-08-27 18:31:55
【问题描述】:

我在学校有一个网络驱动器,我可以正常读写它,但是当我使用java获取现有文本文件并尝试写入它时,我得到了这个异常:

java.io.FileNotFoundException: p:\CompSci_CheckIn_Name.txt (The process cannot access the file because it is being used by another process)

我可以很好地阅读它,但是当我尝试写入它时,它会抛出一个异常。我可以写到我的桌面并从我的桌面读取所有内容,但是当我尝试我的网络驱动器时,它放弃了。我该如何解决这个问题?

阅读

file = new File(directories[i], "CompSci_CheckIn_Name.txt");
readName = new BufferedReader(new FileReader(file));
userName = readName.readLine();
passed = true;

写作

write = new PrintWriter(file);
write.println(newUser);
write.flush();
userName = newUser;
write.close();

我已经尝试了BufferedWriter,但没有成功,结果相同。

【问题讨论】:

  • 当您尝试写入文件时,该文件是否在任何其他程序甚至您的 IDE 中打开?
  • 不,不是,我想知道您是否认为网络驱动器会阻止任何代码写入它?为了防止任何软件这样做?但是文字和东西是有效的,所以什么给了:(
  • 我的下一个问题是,您运行代码时使用的东西是否可以在不同的用户下运行?如果是这样,很有可能会影响事情。您是使用 IDE 还是使用命令行来运行应用程序?
  • 可能你没有对该文件的写权限。
  • 它在主用户下运行,我几乎拥有管理员权限。我也在为我的 IDE 使用 blue j。

标签: java file-io filenotfoundexception


【解决方案1】:

你应该在使用它们之后close()BufferedReaderFileReader

使用 try/finally 块并在 finally 块中关闭您的 Readers。

FileReader fr = null;
BufferdReader br = null;

try {
    fr = new FileRader(file);
    br = new BufferedReader(fr);

    // do something..

} finally {
    if (br != null) br.close();
    if (fr != null) fr.close();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    相关资源
    最近更新 更多