【问题标题】:Java - allow access to files during I/OJava - 允许在 I/O 期间访问文件
【发布时间】:2011-07-12 16:31:38
【问题描述】:

有什么方法可以允许在 Java 中使用文件时对其进行访问?

BufferedWriter bw = new BufferedWriter(new FileWriter(file));
BufferedReader br = new BufferedReader(new FileReader(file));
String data = "";
String line;
while((line = br.readLine()) != null)
{
    data += line;
}
bw.write(data + msg);
br.close();
bw.close();

否则,每次我想在文本文件中添加一行时,我都需要做类似的事情......

谢谢!

澄清一下:我需要外部程序能够在 Java 写入文件时访问该文件。每次我需要向文件中添加一行时,我都不想使用上面的代码。我确实想从一开始就打开一个文件编写器,并在需要时追加(但正如我所说,我需要允许外部程序访问,所以这行不通!)。

【问题讨论】:

  • 你想做什么?
  • “有什么方法可以在 Java 中使用文件时允许访问它们吗?”
  • 您可以尝试在 NIO 库中使用 Selector。 stackoverflow.com/questions/906433/…
  • @Marc Noon - 调查一下,谢谢编辑:嗯,看起来很复杂。真的没有更简单的解决方案吗?
  • @Marc Noon FileChannels 不是 SelectableChannels。选择器不可能解决这个问题。您发布的链接也无关紧要。

标签: java file-io read-write


【解决方案1】:

因为您在 Windows 下,所以没有解决方案。是 Windows 阻止了对文件的并发访问,而不是 Java。

【讨论】:

  • 好吧,那太糟糕了。无论如何,谢谢。
【解决方案2】:

在 java.nio 的概念中,您可以进行非阻塞文件访问。

【讨论】:

  • 我环顾四周,这似乎是要走的路。你碰巧有文件 i/o 的教程/代码 sn-ps 吗?
  • 不,你不是。 Java中没有非阻塞文件访问这样的东西。 @guywhoneedsahand 忽略这个。
  • 即使有,也无助于锁定。非阻塞意味着如果没有立即可用的数据,它不会阻塞线程,它不会绕过锁。
  • @guywhoneedsahand linuxtopia.org/online_books/programming_books/thinking_in_java/… - 在本文中解释了如何锁定文件的某些部分,而其他进程(其他 JVM 或本机进程)仍然可以访问文件的其他部分。但是,据我了解 - 锁定取决于操作系统。
猜你喜欢
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多