[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/suckthegithub/Interview-Notebook/master/notes/Java%20IO.md [Back]  [Original]

* [](#) * [](#) * [](#) * [](#) * [](#) * [](#) * [InetAddress](#inetaddress) * [URL](#url) * [Sockets](#sockets) * [Datagram](#datagram) * [NIO](#nio) * [](#) * [](#) * [](#) * [ NIO ](#-nio-) * [ NIO ](#-nio-) * [](#) * [](#) * [](#) # Java I/O 1. File 2. InputStream OutputStream 3. Reader Writer 4. Serializable 5. Socket 6. /NIO # File #
DP-Decorator-java.io.png [DP-Decorator-java.io.png]

Java I/O InputStream InputStream FileInputStream InputStream FilterInputStream BufferedInputStream FileInputStream FileInputStream BufferedInputStream ```java BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); ``` DataInputStream intdouble ```java byte[] buf = new byte[20*1024]; int bytes = 0; // buf.length -1 eof while((bytes = in.read(buf, 0 , buf.length)) != -1) { // ... } ``` # I/O InputStreamReader OutputStreamWriter Reader Writer ```java byte[] bytes = str.getBytes(encoding); // String str = new String(bytes, encoding) // ``` GBK 2 1 UTF-8 3 1 Java UTF-16be 2 # ObjectOutputStream.writeObject() ObjectInputStream.readObject() Serializable transient **ArrayList ** ArrayList transient ```java private transient Object[] elementData; ``` # Java 1. InetAddress IP 2. URL URL 3. Sockets TCP 4. Datagram UDP ## InetAddress ```java InetAddress.getByName(String host); InetAddress.getByAddress(byte[] addr); ``` ## URL URL ```java URL url = new URL("http://www.baidu.com"); InputStream is = url.openStream(); // InputStreamReader isr = new InputStreamReader(is, "utf-8"); // BufferedReader br = new BufferedReader(isr); String line = br.readLine(); while (line != null) { System.out.println(line); line = br.readLine(); } br.close(); isr.close(); is.close(); ``` ## Sockets - ServerSocket - Socket - InputStream OutputStream
ClienteServidorSockets1521731145260.jpg [ClienteServidorSockets1521731145260.jpg]

## Datagram - DatagramPacket - DatagramSocket # NIO / (NIO) JDK 1.4 NIO I/O Java I/O ## I/O NIO I/O NIO I/O I/O I/O I/O I/O I/O NIO java.io.\* NIO NIO java.io.\* ## ### 1. Channel I/O ( InputStream OutputStream ) - FileChannel - DatagramChannel UDP - SocketChannel TCP - ServerSocketChannel TCP SocketChannel ### 2. / - ByteBuffer - CharBuffer - ShortBuffer - IntBuffer - LongBuffer - FloatBuffer - DoubleBuffer ## - capacity - position - limit 8 position 0 limit = capacity = 9capacity
1bea398f-17a7-4f67-a90b-9e2d243eaa9a.png [1bea398f-17a7-4f67-a90b-9e2d243eaa9a.png]

3 position 3limit
4628274c-25b6-4053-97cf-d1239b44c43d.png [4628274c-25b6-4053-97cf-d1239b44c43d.png]

5 flip() limit position position 0
952e06bd-5a65-4cab-82e4-dd1536462f38.png [952e06bd-5a65-4cab-82e4-dd1536462f38.png]

4 position 4
b5bdcbe2-b958-4aef-9151-6ad963cb28b4.png [b5bdcbe2-b958-4aef-9151-6ad963cb28b4.png]

clear() position limit
67bf5487-c45d-49b6-b9c0-a058d8c68902.png [67bf5487-c45d-49b6-b9c0-a058d8c68902.png]

## NIO FileInputStream FileInputStream FileChannel ```java FileInputStream fin = new FileInputStream("readandshow.txt"); FileChannel fic = fin.getChannel(); ``` 1024 Buffer ```java ByteBuffer buffer = ByteBuffer.allocate(1024); ``` FileChannel Buffer read() -1 ```java int r = fcin.read(buffer); if (r == -1) { break; } ``` FileOutputStream FileOutputStream FileChannel ```java FileOutputStream fout = new FileOutputStream("writesomebytes.txt"); FileChannel foc = fout.getChannel(); ``` flip() ```java buffer.flip(); ``` Buffer FileChannel ```java foc.write(buffer); ``` clear() ```java buffer.clear(); ``` ## NIO ### 1. ServerSocketChannel ServerSocketChannel ```java ServerSocketChannel ssc = ServerSocketChannel.open(); ssc.configureBlocking(false); // ServerSocket ss = ssc.socket(); InetSocketAddress address = new InetSocketAddress(ports[i]); ss.bind(address); // ``` ### 2. Selectors I/O Selector I/O Selectors register() register() Selector OP_ACCEPT ACCEPT SelectionKey Selector Selector SelectionKey SelectionKey ```java Selector selector = Selector.open(); SelectionKey key = ssc.register(selector, SelectionKey.OP_ACCEPT); ``` ### 3. Selector select() select() Selector selectedKeys() SelectionKey SelectionKeys SelectionKey SelectionKey I/O I/O ```java int num = selector.select(); Set selectedKeys = selector.selectedKeys(); Iterator it = selectedKeys.iterator(); while (it.hasNext()) { SelectionKey key = (SelectionKey)it.next(); // ... deal with I/O event ... } ``` ### 4. ServerSocketChannel SelectionKey readyOps() ```java if ((key.readyOps() & SelectionKey.OP_ACCEPT) == SelectionKey.OP_ACCEPT) { // Accept the new connection // ... } ``` readOps() ### 5. accept() ```java ServerSocketChannel ssc = (ServerSocketChannel)key.channel(); SocketChannel sc = ssc.accept(); ``` SocketChannel SocketChannel Selector ```java sc.configureBlocking(false); SelectionKey newKey = sc.register(selector, SelectionKey.OP_READ); ``` register() OP_READ SocketChannel ### 6. SelectionKey SelectionKey SelectionKey remove() SelectionKey ```java it.remove(); ``` ( I/O ) ### 7. I/O I/O Selector.select() I/O SelectionKey OP_READ ```java } else if ((key.readyOps() & SelectionKey.OP_READ) == SelectionKey.OP_READ) { // Read the data SocketChannel sc = (SocketChannel)key.channel(); // ... } ``` ## I/O I/O Java 1024 map() MappedByteBuffer ByteBuffer ByteBuffer ```java MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_WRITE, 0, 1024); ``` ## NIO I/O - NIO FileChannel Channel - NIO I/O # - Eckel B, , , . Java [M]. , 2002. - [IBM: NIO ](https://www.ibm.com/developerworks/cn/education/java/j-nio/j-nio.html) - [ Java I/O ](https://www.ibm.com/developerworks/cn/java/j-lo-javaio/index.html) - [NIO IO ](http://blog.csdn.net/shimiso/article/details/24990499) - [Decorator Design Pattern](http://stg-tud.github.io/sedc/Lecture/ws13-14/5.3-Decorator.html#mode=document) - [Socket Multicast](http://labojava.blogspot.com/2012/12/socket-multicast.html)
Web Proxy Viewer  |  New URL  |  Original Page