본문 바로가기
백엔드기술/개발언어

JAVA NIO 방식으로 File 읽기

by RevFactory 2013. 1. 4.

import java.io.FileInputStream;
import java.io.IOException;
import java.nio.CharBuffer;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.util.Scanner;

public class NIOFileReaderTest
{
 @SuppressWarnings("resource")
 public static void main(String[] args)
 {
  String fileName = "input.txt";
  
  FileChannel channel = null;
  MappedByteBuffer byteBuffer = null;
  Scanner scanner = null;
  
  try
  {
   channel = new FileInputStream(fileName).getChannel();
   byteBuffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
   CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder();
   CharBuffer charBuffer = decoder.decode(byteBuffer);
   scanner = new Scanner(charBuffer).useDelimiter("\n");
   
   while(scanner.hasNext())
   {
    System.out.println(scanner.next());
   }
  }
  catch(IOException e)
  {
   e.printStackTrace();
  }
  finally
  {
   try
   {
    if(scanner != null) scanner.close();
    if(channel != null) channel.close();
   }
   catch(IOException e)
   {
    e.printStackTrace();
   }
  }
 }
}