Cevap "hayır" ... ve "evet" gibi görünüyor. Bir dosyanın başka bir uygulama tarafından yazmaya açık olup olmadığını bilmenin gerçek bir yolu yok gibi görünüyor. Dolayısıyla, böyle bir dosyadan okumak, içerik tükenene kadar ilerleyecektir. Mike'ın tavsiyesine uydum ve bir test kodu yazdım:
Writer.java dosyaya bir dizge yazar ve ardından dosyaya başka bir satır yazmadan önce kullanıcının enter tuşuna basmasını bekler. Bunun başlatılabileceği fikri, daha sonra "kısmi" dosya ile nasıl başa çıktığını görmek için bir okuyucu başlatılabilir. Yazdığım okuyucu Reader.java'da.
Writer.java
public class Writer extends Object
{
Writer () {
}
public static String[] strings =
{
"Hello World",
"Goodbye World"
};
public static void main(String[] args)
throws java.io.IOException {
java.io.PrintWriter pw =
new java.io.PrintWriter(new java.io.FileOutputStream("out.txt"), true);
for(String s : strings) {
pw.println(s);
System.in.read();
}
pw.close();
}
}
Reader.java
public class Reader extends Object
{
Reader () {
}
public static void main(String[] args)
throws Exception {
java.io.FileInputStream in = new java.io.FileInputStream("out.txt");
java.nio.channels.FileChannel fc = in.getChannel();
java.nio.ByteBuffer bb = java.nio.ByteBuffer.allocate(10);
while(fc.read(bb) >= 0) {
bb.flip();
while(bb.hasRemaining()) {
System.out.println((char)bb.get());
}
bb.clear();
}
System.exit(0);
}
}
Bu kodun en iyi uygulama olduğunu garanti etmez.
Bu, Mike tarafından önerilen, dosyadan okunacak yeni veri olup olmadığını düzenli olarak kontrol etme seçeneğini bırakır. Bu, daha sonra, okumanın tamamlandığı belirlendiğinde dosya okuyucuyu kapatmak için kullanıcı müdahalesini gerektirir. Ya da okuyucunun dosyanın içeriğinden haberdar edilmesi ve yazma koşulunu belirleyip bitirebilmesi gerekir. İçerik XML ise, belgenin sonu bunu belirtmek için kullanılabilir.