package com.gx.xmj;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
//FileInputStream:单个字节读取 FileOutputStream:单个字节写入
public class IOTwo {//IO流测试二
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("D:\\IO流测试\\OneTest.txt");
FileOutputStream fos = new FileOutputStream("E:\\z\\tttt.txt", true);
// FileOutpurStream()后面加true表示文件后面可追加
int a = fis.read();// read()一次读一个字节
System.out.println(a);// 读取的一个字节输出
fos.write(101);// write()一次写一个字节
fis.close();// 一定要记得关闭流,养成好习惯
fos.close();
// ----------------------------------------------------------
System.out.println("FileInputStream和FileOutputStream进行拷贝文本/图片/歌曲");
FileInputStream fis1 = new FileInputStream("D:\\IO流测试\\OneTest.txt");
FileOutputStream fos1 = new FileOutputStream("D:\\IO流测试\\bbb.txt");
// 如果没有bbb.txt,就会创建一个
int b;
while ((b = fis1.read()) != -1) {// while循环:一直循环,直到满足条件为止才停止循环
fos1.write(b);
}
fis1.close();
fos1.close();
// ----------------------------------------------------------------
System.out.println("FIleInputStream和FileOutputStream定义小数组进行读写操作;");
FileInputStream fis2 = new FileInputStream("D:\\IO流测试\\OneTest.txt");
FileOutputStream fos2 = new FileOutputStream("D:\\IO流测试\\aaa.txt");
int len;
byte[] arr = new byte[10214 * 8];// 自定义字节数组
while ((len = fis2.read(arr)) != -1) {
fos2.write(arr, 0, len);
}
// IO流定义小数组
// write(byte[] b)
// write(byte[] b, int off,int len) 写出有效的字节个数
fis2.close();
fos2.close();
// -----------------------------------------------------------
System.out.println("字节缓冲区流");
FileInputStream fis3 = new FileInputStream("D:\\IO流测试\\OneTest.txt");
FileOutputStream fos3 = new FileOutputStream("D:\\IO流测试\\ddd.txt");
BufferedInputStream bis = new BufferedInputStream(fis3);
// 使用装饰模式,把fis3装饰进去bis中。使用缓冲区读取速度变快
BufferedOutputStream bos = new BufferedOutputStream(fos3);
int c;
while ((c = bis.read()) != -1) {
bos.write(c);
}
bis.close();
bos.close();
// ---------------------------------------------------------------------
System.out.println("字节流字符流的使用");
// FileReader类的read()方法可以按照字符大小读取
FileReader fr = new FileReader("D:\\IO流测试\\OneTest.txt");
char[] chs = new char[100];
int d;
while ((d = fr.read(chs)) != -1) {
System.out.println(d);// int类型转为字符类型
}
fr.close();
// FileWriter类的write()方法可以自动把字符转为字节写出
FileWriter fw = new FileWriter("E:\\z\\One.txt", true);
fw.write("test222");
fw.close();
// ----------------------------------------------------
// 字符流的拷贝
System.out.println("字符流的拷贝");
FileReader fr1 = new FileReader("D:\\IO流测试\\OneTest.txt");
FileWriter fw1 = new FileWriter("D:\\IO流测试\\eee.txt");
int ch;
while ((ch = fr1.read()) != -1) {
fw1.write(ch);
}
fr1.close();
fw1.close();
// -------------------------------------------------------------------
BufferedReader br1 = new BufferedReader(
new FileReader("D:\\IO流测试\\OneTest.txt"));
BufferedWriter bw1 = new BufferedWriter(
new FileWriter("D:\\IO流测试\\fff.txt"));
// BufferedReader和BufferedWriter的使用
int br;
while ((br = br1.read()) != -1) {
bw1.write((char) br);
}
bw1.flush();
br1.close();
bw1.close();
// ------------------------------------------------------------------
InputStreamReader r = new InputStreamReader(new FileInputStream(
"D:\\IO流测试\\OneTest.txt"), "utf-8");
OutputStreamWriter w = new OutputStreamWriter(new FileOutputStream(
"D:\\IO流测试\\ggg.txt"));
int ww;
while ((ww = r.read()) != -1) {
w.write(ww);
}
r.close();
w.close();
}
}
电脑文件原图:
运行后电脑文件: