1. Kết quả Event Ghost 2016


    Dưới đây là danh sách những thành viên đoạt giải thưởng trong Event Ghost 2016

3 cách đọc file sử dụng New IO

Thảo luận trong 'Java & JSP' bắt đầu bởi No Nguyễn, 22 Tháng mười 2014.


  1. No Nguyễn

    No Nguyễn Admin Ban Quản Trị

    1,408
    2,079
    213
    Tên thật:
    Nguyễn Văn Trung
    Bắt đầu từ phiên bản Java 1.4 Sun đã bổ sung thêm một cách mới để quản lý các thao tác vào ra.

    NIO được xây dựng dựa trên hai hạng mục cơ bản là: buffer và channel. Một vùng đệm (buffer) lưu trữ dữ liệu. Một kênh (channel) biểu diễn một liên kết mở tới một thiết bị vào ra mới, như tệp tin hoặc một socket. Để sử dụng NIO, ta phải nhận một kênh truyền tới một thiết bị vào ra và một vùng đệm để lưu trữ dữ liệu. Sau đó ta có thể thực hiện thao tác trên vùng đệm để vào và ra dữ liệu

    This example shows how we have been reading a text file using old I/O library APIs. It uses a BufferedReader object for reading. Another way can be using InputStream implementation.
    IO
    Mã:
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    public class WithoutNIOExample
    {
        public static void main(String[] args)
        {
            BufferedReader br = null;
            String sCurrentLine = null;
            try
            {
                br = new BufferedReader(
                new FileReader("test.txt"));
                while ((sCurrentLine = br.readLine()) != null)
                {
                    System.out.println(sCurrentLine);
                }
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            finally
            {
                try
                {
                    if (br != null)
                    br.close();
                } catch (IOException ex)
                {
                    ex.printStackTrace();
                }
            }
        }
    }
    
    NIO

    1) Read a small file in buffer of file size
    Mã:
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.nio.ByteBuffer;
    import java.nio.channels.FileChannel;
    public class ReadFileWithFileSizeBuffer
    {
        public static void main(String args[])
        {
            try
            {
                RandomAccessFile aFile = new RandomAccessFile(
                                "test.txt","r");
                FileChannel inChannel = aFile.getChannel();
                long fileSize = inChannel.size();
                ByteBuffer buffer = ByteBuffer.allocate((int) fileSize);
                inChannel.read(buffer);
                buffer.rewind();
                buffer.flip();
                for (int i = 0; i < fileSize; i++)
                {
                    System.out.print((char) buffer.get());
                }
                inChannel.close();
                aFile.close();
            }
            catch (IOException exc)
            {
                System.out.println(exc);
                System.exit(1);
            }
        }
    }
    
    2) Read a large file in chunks with fixed size buffer
    Mã:
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.nio.ByteBuffer;
    import java.nio.channels.FileChannel;
    public class ReadFileWithFixedSizeBuffer
    {
        public static void main(String[] args) throws IOException
        {
            RandomAccessFile aFile = new RandomAccessFile
                    ("test.txt", "r");
            FileChannel inChannel = aFile.getChannel();
            ByteBuffer buffer = ByteBuffer.allocate(1024);
            while(inChannel.read(buffer) > 0)
            {
                buffer.flip();
                for (int i = 0; i < buffer.limit(); i++)
                {
                    System.out.print((char) buffer.get());
                }
                buffer.clear(); // do something with the data ,clear/compact it.
            }
            inChannel.close();
            aFile.close();
        }
    }
    
    3) Faster file copy with mapped byte buffer

    Mã:
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.nio.MappedByteBuffer;
    import java.nio.channels.FileChannel;
    public class ReadFileWithMappedByteBuffer
    {
        public static void main(String[] args) throws IOException
        {
            RandomAccessFile aFile = new RandomAccessFile
                    ("test.txt", "r");
            FileChannel inChannel = aFile.getChannel();
            MappedByteBuffer buffer = inChannel.map(FileChannel.MapMode.READ_ONLY, 0, inChannel.size());
            buffer.load();
            for (int i = 0; i < buffer.limit(); i++)
            {
                System.out.print((char) buffer.get());
            }
            buffer.clear(); // do something with the data and clear/compact it.
            inChannel.close();
            aFile.close();
        }
    }
    
    Tất cả các đoạn code nói trên sẽ đọc nội dung của tập tin và in nó ra màn hình. Các bạn có thể làm bất cứ điều gì bạn muốn khi các bạn đã đọc nó.

    Happy Learning !!
     

Chia sẻ trang này