字节输出流:OutputStream
public abstract class OutputStream
extends Object
implements Closeable,Flushable
构造:
public FileOutputStream(File file)throws FileNotFoundException 新建数据
public FileOutputStream(File file,boolean append)throws FileNotFoundException 追加数据
输出:
public abstract void write(int b)throws IOException 输出单个字节数据
public void write(byte b[ ])throws IOException 输出一组字节数据
public void write(byte b[ ],int off,int len)throws IOException 输出部分字节数据
写入数据:
public class OutputStreamDemo {
public static void main(String[] args) throws Exception {
File file = new File("d:" + File.separator + "demo.txt"); // 要操作的文件
OutputStream out = null; // 声明字节输出流
out = new FileOutputStream(file); // 通过子类实例化
String str = "hello world"; // 要输出的信息
byte b[] = str.getBytes(); // 将String变为byte数组
out.write(b); // 写入数据
}
}
追加数据:
public class AppendOutputStreamDemo {
public static void main(String[] args) throws Exception {
File file = new File("d:" + File.separator + "demo.txt"); // 要操作的文件
OutputStream out = null; // 声明字节输出流
out = new FileOutputStream(file, true); // 通过子类实例化,表示追加
String str = "hello world \r\n"; // 要输出的信息,“\r\n”表示换行
byte b[] = str.getBytes(); // 将String变为byte数组
out.write(b); // 写入数据
out.close(); // 关闭
}
}
public abstract class InputStream
extends Object
implements Closeable,Flushable
读取:
public abstract int read()throws IOException 读取单个字节,当读取结束时返回-1public int read(byte[ ] b)throws IOException 读取多个字节数据(具体详见百度)
public int read(byte[ ] b,int off,int len)throws IOException 读取指定字节数据
读取所有数据
public class InputStreamDemo01 {
public static void main(String[] args) throws Exception {
File file = new File("d:" + File.separator + "demo.txt"); // 要操作的文件
InputStream input = null; // 字节输入流
input = new FileInputStream(file);// 通过子类进行实例化操作
byte b[] = new byte[1024];// 开辟空间接收读取的内容
int len = input.read(b); // 将内容读入到byte数组中
System.out.println(new String(b, 0, len)); // 输出内容
input.close(); // 关闭
}
}
字符输出流:Writer
public abstract class Writer
extends Object
implements Closeable,Flushable,Appendable
方法:
public abstract void close() throws IOException 关闭输出流
public void write(String str) throws IOException 将String字符串输出
public void write(char[ ] str) throws IOException 将字符数组输出public abstract void flush() throws IOException 强制性清空缓存
示例:
public class WriterDemo {
public static void main(String[] args) throws Exception {
File file = new File("d:" + File.separator + "demo.txt"); // 要操作的文件
Writer out = null; // 声明字符输出流
out = new FileWriter(file); // 通过子类实例化
String str = "hello world"; // 要输出的信息
out.write(str); // 写入数据
out.flush(); // 刷新
}
}
字符输入流:Reader
public abstract class Reader
extends Object
implements Closeable,Readable
方法:
public abstract void close() throws IOException 关闭输出流
public int read() throws IOException 读取单个字符
public int read(char[ ] str) throws IOException 将内容读取到字符数组,返回读入的长度示例:
public class ReaderDemo01 {
public static void main(String[] args) throws Exception {
File file = new File("d:" + File.separator + "demo.txt"); // 要操作的文件
Reader input = null; // 字符输入流
input = new FileReader(file);// 通过子类进行实例化操作
char b[] = new char[1024];// 开辟空间接收读取的内容
int len = input.read(b); // 将内容读入到byte数组中
System.out.println(new String(b, 0, len)); // 输出内容
input.close(); // 关闭
}
}
字节流和字符流的区别
1)字节流没有使用缓冲区,而字符流使用到了。
2)字节流可以处理各种数据,但在处理中文时用字符流更好。