java.nio.channels.FileChannel
을 파일에서 읽으 려하지만 BufferedReader#readLine()
과 같이 한 줄에 한 줄씩 읽고 싶습니다. java.io
대신 java.nio.channels.FileChannel
을 사용해야하는 이유는 파일에 잠금을 설정하고 해당 잠금 파일에서 한 줄씩 읽어야하기 때문입니다. 그래서 저는 java.nio.channels.FileChannel
을 사용해야합니다. 그것이 바로 finally
및 lock
로 이동되고, 여기에 편집java.nio.channels.FileChannel을 사용하여 ByteBuffer로 읽는 방법 BufferedReader # readLine()과 같은 유사한 동작을 얻는 방법
내 코드는 코드가 여기에 lock = channel.lock();
때되는 FileChannel
public static void main(String[] args){
File file = new File("C:\\dev\\harry\\data.txt");
FileInputStream inputStream = null;
BufferedReader bufferedReader = null;
FileChannel channel = null;
FileLock lock = null;
try{
inputStream = new FileInputStream(file);
channel = inputStream.getChannel();
lock = channel.lock();
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String data;
while((data = bufferedReader.readLine()) != null){
System.out.println(data);
}
}catch(IOException e){
e.printStackTrace();
}finally{
try {
lock.release();
channel.close();
if(bufferedReader != null) bufferedReader.close();
if(inputStream != null) inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
를 얻기 위해 FileInputStream에를 사용하려고 도와주세요 그래서 여전히 lock.release()
null
입니다 NullPointerException
을 생성하십시오. 왜 그런지 모르겠습니다.
필자는 어떤 이유로 파일을 'FileInputStream'으로 잠그려고 할 때 잘 작동하지 않습니다. 확실하지 왜, –
기억 나는 어떤 문제없이 .. 전에 이것을 사용했습니다. 무슨 일을하는지 알 수 있습니다. –
@Suraj :'FileInputStream'을 사용하여 제 코드로 내 게시물을 업데이트했습니다. 한번보세요. –