대답은 "아니오"... 그리고 "예"인 것 같습니다. 다른 응용 프로그램에서 쓰기 위해 파일이 열려 있는지 알 수있는 실제 방법이없는 것 같습니다. 따라서 이러한 파일에서 읽는 것은 내용이 모두 소진 될 때까지 진행됩니다. 나는 Mike의 조언을 듣고 몇 가지 테스트 코드를 작성했습니다.
Writer.java는 파일에 문자열을 쓴 다음 파일에 다른 줄을 쓰기 전에 사용자가 Enter 키를 누를 때까지 기다립니다. 시작될 수 있다는 생각은 독자가 "부분"파일에 어떻게 대처하는지보기 시작하는 것입니다. 내가 쓴 독자는 Reader.java에 있습니다.
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);
}
}
이 코드가 모범 사례라는 보장은 없습니다.
그러면 파일에서 읽을 새 데이터가 있는지 주기적으로 확인하는 Mike가 제안한 옵션이 남습니다. 그러면 읽기가 완료되었다고 판단되면 파일 판독기를 닫으려면 사용자 개입이 필요합니다. 또는 독자가 파일의 내용을 인식하고 쓰기 조건을 결정하고 종료 할 수 있어야합니다. 내용이 XML 인 경우 문서의 끝을 사용하여이를 알릴 수 있습니다.