ファイルからの読み取りに使用java.nio.channels.FileChannelしたいのですが、同じように1行ごとに読み取りたいですBufferedReader#readLine()。java.nio.channels.FileChannel代わりに使用する必要があるのjava.ioは、ファイルにロックをかけ、そのロックファイルから1行ずつ読み取る必要があるためです。だから私は強制的に使用しますjava.nio.channels.FileChannel。助けてください
編集これは、FileInputStreamを使用して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();
}
}
}
コードがここにあるときlock = channel.lock();、それはすぐにに行き、finallyまだlockあるnullので、をlock.release()生成しNullPointerExceptionます。理由はわかりません。