Java 中的写入
来源:互联网 发布:微信数据保存到sd卡 编辑:程序博客网 时间:2024/05/04 07:11
public static void main(String[] args) throws Exception { FileOutputStream fileOutputStream = new FileOutputStream("1.txt"); fileOutputStream.write("sdf".getBytes()); }
这样,就是把字符串 “sdf” 写到硬盘上了。
FileOutputStream 继承自 OutputStream,而后者是抽象类,代表的是向外输出的一种意图。
一个抽象类能指望它干什么实在事?
所以 FileOutputStream 也就是第一个干实事的类,工作机制也很简单,字符串转化为字节流,然后把字节流写入到硬盘上。
至于字符串和字节流的映射就是编码的事情了。
flush 方法继承自 OutputStream,FileOutputStream 的实现就是个空函数。
flush 的本意就是对提供了缓存的输出流,一个强制将缓存中数据 flush 的办法。
所以没有提供缓冲功能的 FileOutputStream 的 flush 方法自然是个空方法了。
听说是有个缓冲区,性能会更好,我又不是学底层的,他们说好就好呗。
一个比较争议的问题是,FileWriter 提不提供缓冲功能?
public static void main(String[] args) throws Exception { Writer writer = new FileWriter("1.txt"); writer.write("sdf"); }
运行后发现,数据没有写到文件了,必须要调用下 flush 方法才行。
其实是有缓冲区
public class StreamEncoder extends java.io.Writer { private static final int DEFAULT_BYTE_BUFFER_SIZE = 8192; private volatile boolean isOpen; private java.nio.charset.Charset cs; private java.nio.charset.CharsetEncoder encoder; private java.nio.ByteBuffer bb; private final java.io.OutputStream out; private java.nio.channels.WritableByteChannel ch; private boolean haveLeftoverChar; private char leftoverChar; private java.nio.CharBuffer lcb;就是通过这个类,ByteBuffer 和 CharBuffer 一应俱全,这个类哪冒出来的我也不知道,反正来自 Sun。
另外一个类 BufferWriter,也提供了缓存功能,
而在 nio 中,为所有类型提供了缓存功能。
这设计的还真是。。。。
0 0
- Java 中的写入
- java 中的写入后换行
- Java中的XML文件写入
- Java中的写入字符文件类FileWriter
- java 读取和写入配置文件中的数据
- JAVA中的XML文件--文件写入
- 将excel中的内容写入到PDF中(java)
- java读取文件中的内容写入excel中
- Java读取、写入、处理Excel文件中的数据
- 简单的java写入到excel中的代码
- Java读取、写入、处理Excel文件中的数据
- Java读取、写入、处理Excel文件中的数据
- Java写入文本
- java 写入文件方法
- java io 写入写出
- 将JAVA写入TXT
- java写入大量数据
- java写入/读取xml
- Python笔记:二叉堆及堆排序
- Javascript 中的addLoadEvent详解
- hdu 5047 Sawtooth
- 学习《Binarized Normed Gradients for Objectness Estimation at 300fps》
- zoj 1986 - Bridging Signals
- Java 中的写入
- session和cookie
- Android中启动其他Activity并返回结果
- Hackerrank Angry Children
- 控制芯片中 EEPROM 与 FLASH 的区别
- 高性能java学习
- 游戏工作不等于要加班!——base64位加解密原理
- 组合模式(Composite)
- 平凡的我