标签:
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; public class OutputStreamDemo { public static void main(String[] args) { try { // create a new output stream OutputStream os = new FileOutputStream("test.txt"); // craete a new input stream InputStream is = new FileInputStream("test.txt"); // write something os.write(‘A‘); // flush the stream but it does nothing os.flush(); // write something else os.write(‘B‘); // read what we wrote System.out.println("" + is.available()); } catch (Exception ex) { ex.printStackTrace(); } } }
FileDescriptor
对象来表示此文件连接。如果有安全管理器,则用 name
作为参数调用 checkWrite
方法。 如果该文件存在,但它是一个目录,而不是一个常规文件;或者该文件不存在,但无法创建它;抑或因为其他某些原因而无法打开它,则抛出 FileNotFoundException,OutputStream os = new FileOutputStream("test.txt"); // craete a new input stream InputStream is = new FileInputStream("test.txt"); // write something BufferedOutputStream bos = new BufferedOutputStream(os); bos.write(‘C‘); // flush the stream but it does nothing bos.flush(); // write something else bos.write(‘B‘); bos.close();
如果我们不使用flush,也不使用close的话,则输出结果为0
5 给出了flush的源码
通过查看源码,可以看到 BufferedOutputStream中的flush实现如下 BufferedOutputStream是同步的
public synchronized void flush() throws IOException { flushBuffer(); out.flush(); } private void flushBuffer() throws IOException { if (count > 0) { out.write(buf, 0, count); count = 0; } } public void write(byte b[], int off, int len) throws IOException { if (b == null) { throw new NullPointerException(); } else if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) > b.length) || ((off + len) < 0)) { throw new IndexOutOfBoundsException(); } else if (len == 0) { return; } for (int i = 0 ; i < len ; i++) { write(b[off + i]); } }
6 提出了自己的两个小疑问
我的小疑问:
你真的以为了解java.io吗 呕心沥血 绝对干货 别把我移出首页了
标签:
原文地址:http://www.cnblogs.com/winAlaugh/p/5459654.html