一、IO(Input Output)流
- IO流用来处理设备之间的数据传输
- Java对数据的操作是通过流的方式
- Java用于操作流的对象都在IO包中
- 流按操作数据分为两种:字节流和字符流
- 流按流向分为:输入流和输出流
二、IO流常用基类
- 字节流的抽象基类:InputStream OutputStream
- 字符流的抽象基类:Reader Writer
- 注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
- 如:InputStream 的子类FileInputStream Reader的子类FileReader
- 流的重要操作是读和写
- 读和写都会发生IOException
三、Writer字符输出流
- 写入字符流的抽象类。
- 子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。
- 但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。
- 直接已知子类:
- BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter
public abstract class Writer implements Appendable, Closeable, Flushable { /** *刷新该流的缓冲。 *如果该流已保存缓冲区中各种 write() 方法的所有字符,则立即将它们写入预期目标。 *然后,如果该目标是另一个字符或字节流,则将其刷新。 *因此,一次 flush() 调用将刷新 Writer 和 OutputStream 链中的所有缓冲区。 */ public abstract void flush() throws IOException; /** *关闭此流,但要先刷新它。 *在关闭该流之后,再调用 write() 或 flush() 将导致抛出 IOException。 *关闭以前关闭的流无效。 */ public abstract void close() throws IOException; //写入字符数组的某一部分。 public abstract void write(char[] cbuf, int off, int len) throws IOException; //写入字符数组。 public void write(char[] cbuf) throws IOException{} //写入单个字符。要写入的字符包含在给定整数值的 16 个低位中,16 高位被忽略 public void write(int c) throws IOException{} //写入字符串。 public void write(String str) throws IOException{} //写入字符串的某一部分。 public void write(String str, int off, int len) throws IOException{} }
四、OutputStreamWriter
- OutputStreamWriter 是字符流通向字节流的桥梁:
- 可使用指定的 charset 将要写入流中的字符编码成字节。
- 它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。
- 每次调用 write() 方法都会导致在给定字符(或字符集)上调用编码转换器。
- 在写入底层输出流之前,得到的这些字节将在缓冲区中累积。
- 可以指定此缓冲区的大小,不过,默认的缓冲区对多数用途来说已足够大。
- 注意,传递给 write() 方法的字符没有缓冲。
- 为了获得最高效率,可考虑将 OutputStreamWriter 包装到 BufferedWriter 中,以避免频繁调用转换器
public class OutputStreamWriter extends Writer { //创建使用默认字符编码的 OutputStreamWriter public OutputStreamWriter(OutputStream out){} //创建使用指定字符集的 OutputStreamWriter。 public OutputStreamWriter(OutputStream out, String charsetName) throws UnsupportedEncodingException{} //返回此流使用的字符编码的名称。 public String getEncoding(){} //其余方法继承自Writer和Object }
五、FileWriter
- 用来写入字符文件的便捷类。
- 此类的构造方法假定默认字符编码和默认字节缓冲区大小都是可接受的。
- 要自己指定这些值,可以先在 FileOutputStream 上构造一个 OutputStreamWriter。
- 文件是否可用或是否可以被创建取决于底层平台。
- 特别是某些平台一次只允许一个 FileWriter(或其他文件写入对象)打开文件进行写入。
- 在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。
- FileWriter 用于写入字符流。要写入原始字节流,请考虑使用 FileOutputStream。
public class FileWriter extends OutputStreamWriter { /** *根据给定的 File 对象构造一个 FileWriter 对象。 *IOException - 如果该文件存在,但它是一个目录,而不是一个常规文件; *或者该文件不存在,但无法创建它;抑或因为其他某些原因而无法打开它 */ public FileWriter(File file) throws IOException{} //根据给定的 File 对象构造一个 FileWriter 对象。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。 public FileWriter(File file, boolean append) throws IOException{} //根据给定的文件名构造一个 FileWriter 对象。 public FileWriter(String fileName) throws IOException{} //根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象 public FileWriter(String fileName, boolean append) throws IOException{} //其余方法全部继承自OutputStreamWriter }
相关推荐
java.io.CharConversionException: isHexDigit.最近项目运行出现了这个问题,刚开始就知道是编码问题,怎么改编码都不正确,在网上搜到的文章。
java.io.Reader 和 java.io.InputStream 的区别
专业的课程讲解 所有的程序都离不开信息的输入和输出。例如,从键盘读取数据、在网络上交换数据、打印报表、读写文件信息等,都要涉及数据输入输出的处理。...在Java中,处理数据流的类主要被放在java.io包中 。
java.io包详细解说,讲得很详细 同类文档:Java-从Decorator,Adapter模式看Java IO库,已上传
ajax,js传值到后台,后台出现java.io.CharConversionException: isHexDigit 异常
gnu.io.CommDriver.class gnu.io.CommPort.class gnu.io.CommPortEnumerator.class gnu.io.CommPortIdentifier.class gnu.io.CommPortOwnershipListener.class gnu.io.Configure.class gnu.io.I2C.class gnu.io.I2...
串口通讯需要的jar包,gnu.io.SerialPort; gnu.io.CommPortIdentifier; gnu.io.SerialPort; gnu.io.SerialPortEvent; gnu.io.SerialPortEventListener; gnu.io.UnsupportedCommOperationException; Copy RXTXcomm...
串口通信gnu.io包不存在,这里提供jar包,下载导入即可,亲测可用
NULL 博文链接:https://yizhilong28.iteye.com/blog/1154098
java.io.Serializable序列化问题
网上找来了相关java文件,改文件包主要用于解决类似找不到sun.io.CharToByteConverter类及相关方法情况,放到对应引用文件目录下编译即可。 PS:java文件编码格式为UTF-8,如果有其它编码格式,自己调整一下就行,我...
Eclipse 进行 ANT 时错误 Javadoc failed java.io.IOException Cannot run program javadoc
下面的示例用法( require 'me.moocar.java.io)( require '[clojure.java.io :as jio])( import '(java.nio.file Paths))( def p ( Paths/get " /tmp " ( into-array [ " foo " ])))( with-open [writer ( jio/...
import java.io.*; public class udptest { ///创建一个数据包套接字对象ds,并且指定连接的端口号 ///创建一个数据包对象dp ///指定一个字节数组,用来存储接受的数据 public static void rev() { try { ...
http://blog.csdn.net/maoxiang/archive/2008/09/20/2954553.aspx 详细见
socket.io,socket.io-client 用于java或android连接nodejs websocket
开发java时,使用的一个引用包,平时dos中测试开发小程序时,可能缺少;
org.apache.commons.io的jar包集合,少了啥欢迎补充
因为项目中需要实现后端推荐消息到前端,经过研究和讨论,最终决定用Socket.io实现消息的推送,而在SpringBoot用Socket.io实现消息推送在网上的例子太少了,本人研究了一天的Socket.io,终于对Socket.io的应用比较...