파일을 잠근 다음 업데이트 할 때마다이 작업을 수행 할 때마다 : java.nio.channels.overlappingFilelockException,이 예외와 함께 catch 절을 추가하려고 시도했습니다. 코드의 :java : OverlappingFileLockException
catch(OverlappingFilelockException e){
lock.relese();
}
그러나 이것은 나를 위해 작동하지 않습니다. 여기에 내 Java 코드입니다,이 예외를 제거하려면 어떻게해야합니까?
File file = new File("C://Users//user//Desktop//conf1.xml");
String content = '';
BufferedReader s;
BufferedWriter w;
RandomAccessFile ini=new RandomAccessFile(file, "rwd");;
FileLock lock= ini.getChannel().tryLock();;
def flowFile1=session.create();
DocumentBuilder dBuilder = null;
Document doc=null;
String start, startDate, endDate, runAs, makeVersion, patch;
try {
String sCurrentLine;
s = new BufferedReader(Channels.newReader(ini.getChannel(), "UTF-8"));
while ((sCurrentLine = s.readLine()) != null) {
content += sCurrentLine;
}
ini.seek(0);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
StreamResult result1 = new StreamResult(bos);
try {
transformer.transform(source, result1);
} catch (TransformerException e) {
e.printStackTrace();
}
byte[] array = bos.toByteArray();
String data = bos.toString();
if (!data.isEmpty()) {
ini.setLength(0);
w = new BufferedWriter(Channels.newWriter(ini.getChannel(), "UTF-8"));
w.write(data);
lock.release();
w.close();
}
}catch (FileNotFoundException e) {
Thread.sleep(5000);
} catch (Exception e) {
e.printStackTrace();
}
finally {
lock.release();
ini.close();
}
최소한의 완전하고 검증 가능한 예제로 코드를 작성하십시오. 나는 xml 행렬이 java.nio 오류와 관련이 있다고 생각하지 않는다. – Heri
'나에게 적합하지 않습니다'는 문제 설명이 아닙니다. – EJP