다른 응용 프로그램/프로세스에서 실제로 쓰고있는 파일에서 읽고 싶습니다.자바를 사용하여 적극적으로 쓰는 파일에서 읽음 [Improvement]
다른 질문에서 찾은이 코드는 작업을 수행합니다. 파일이 쓰여지는 동안 파일을 읽고 새 내용 만 읽습니다.
파일에 데이터가 추가되지 않아도 많은 CPU를 소비하는 문제. 이 코드를 어떻게 최적화 할 수 있습니까?
- 타이머를 사용 하시겠습니까? 또는 thread.sleep을 일시 중지 하시겠습니까?
내가 추가하려는 또 다른 사항은 파일을 실시간으로 읽고 해당 내용을 처리하는 것입니다. 즉, thread.sleep 또는 타이머가 전체 프로그램을 일시 중지합니다. 내가 바라는 이상적인 개선은 몇 초를 기다리지 않고 특정 이벤트가 발생하는 것입니다.>새로운 데이터가 추가되었습니다. 이것이 가능한가 ?
public class FileReader {
public static void main(String args[]) throws Exception {
if(args.length>0){
File file = new File(args[0]);
System.out.println(file.getAbsolutePath());
if(file.exists() && file.canRead()){
long fileLength = file.length();
readFile(file,0L);
while(true){
if(fileLength<file.length()){
readFile(file,fileLength);
fileLength=file.length();
}
}
}
}else{
System.out.println("no file to read");
}
}
public static void readFile(File file,Long fileLength) throws IOException {
String line = null;
BufferedReader in = new BufferedReader(new java.io.FileReader(file));
in.skip(fileLength);
while((line = in.readLine()) != null)
{
System.out.println(line);
}
in.close();
}
}
답장을 보내 주셔서 감사합니다. 두 가지 응용 프로그램에 중점을 두려고하지 않습니다. 앞에서 언급했듯이 위의 코드는 알림을 보내는 작업을 수행합니다. 내가 해결하려고하는 문제는 스레드가 절대로 일시 중지되지 않으므로 응용 프로그램의 오버 헤드를 줄이는 것입니다. –
당신은 오신 것을 환영합니다. 이해 했어. 나는 갱신했다. 유용 여부를 알려주도록하겠습니다. – davidxxx
답변 해 주셔서 감사합니다. :). –