https://www.cnblogs.com/whgk/p/6920018.html 大佬的文章
字符流
)public static void main(String[] args) throws IOException {
//创建输出流对象
//FileWriter fw = new FileWriter("c.txt");
FileWriter fw = new FileWriter("c.txt",true); //表示追加写入,默认是false
//输出的内容
for(int x=0; x<10; x++) {
fw.write("hello"+x);
fw.write("\r\n");
}
//释放资源
fw.close();
}
public static void main(String[] args) throws IOException {
//创建输入流对象
FileReader fr = new FileReader("FileWriterDemo.java");
//创建输出流对象
FileWriter fw = new FileWriter("Copy.java");
//读写数据
char[] chs = new char[1024];
int len;
while((len=fr.read(chs))!=-1) {
fw.write(chs, 0, len);
}
//释放资源
fw.close();
fr.close();
}
/*
* 需求:
* 把项目路径下的FileWriterDemo.java中的内容复制到项目路径下的Copy.java中
*
* 数据源:
* FileWriterDemo.java -- 读数据 -- FileReader
* 目的地:
* Copy.java -- 写数据 -- FileWriter
*/
public static void main(String[] args) throws IOException {
//创建输入流对象(FileWriterDemo.java是本地文件)
FileReader fr = new FileReader("FileWriterDemo.java");
//创建输出流对象(Copy.java拷贝之后的文件)
FileWriter fw = new FileWriter("Copy.java");
//读写数据(建议填写1024的整数倍)
char[] chs = new char[1024];
int len;
while((len=fr.read(chs))!=-1) {
fw.write(chs, 0, len);
}
//释放资源
fw.close();
fr.close();
}
字符流
)public static void main(String[] args) throws IOException {
//创建输出缓冲流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt"));
bw.write("hello");
//bw.flush();
bw.close();
//创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("FileWriterDemo.java"));
//一次读写一个字符数组
char[] chs = new char[1024];
int len;
while((len=br.read(chs))!=-1) {
System.out.print(new String(chs,0,len));
}
//释放资源
br.close();
}
//缓冲流一次读写一个字符串
public static void method5(String srcFileName,String destFileName) throws IOException {
//创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader(srcFileName));
//创建输出缓冲流对象
BufferedWriter bw = new BufferedWriter(new FileWriter(destFileName));
//一次读写一个字符串(一次读写一行)
String line;
while((line=br.readLine())!=null){
bw.write(line);//读一行但不包括换行符
bw.newLine();//换行符
bw.flush();
}
//释放资源
bw.close();
br.close();
}
只能
操作文件和文件夹,不能
操作文件内容字节流
)字节或字节数据(byte)
,字符流传的是字符或字符数组(Char)
public static void main(String[] args) throws IOException {
//创建字节输入流对象
FileInputStream fis = new FileInputStream("IODemo.java");
//创建字节输出流对象
FileOutputStream fos = new FileOutputStream("d:\\a\\IODemo.java");
//一次读写一个字节
/*int by;
while((by = fis.read()) != -1) {
fos.write(by);
}*/
//一次读写一个字节数组
int len;//存储读到的字节个数
byte[] bys = new byte[1024];
while((len = fis.read(bys)) != -1) {
fos.write(bys,0,len);
}
//释放资源
fos.close();
fis.close();
}
字节流
public static void main(String[] args) throws IOException {
//创建字节输入流对象
FileInputStream fis = new FileInputStream("传智学院.jpg");
//创建字节输出流对象
FileOutputStream fos = new FileOutputStream("d:\\传智学院.jpg");
//一次读写一个字节数组
int len;//用于存储读到的字节个数
byte[] bys = new byte[1024];
while((len = fis.read(bys)) != -1) {
fos.write(bys,0,len);
}
//释放资源
fos.close();
fis.close();
}
字符流
public static void main(String[] args) throws IOException {
//创建字符输入流对象
FileReader fr = new FileReader("传智学院.jpg");
//创建字符输出流对象
FileWriter fw = new FileWriter("d:\\传智学院.jpg");
//一次读写一个字符数组
int len;//用于存储读到的字符个数
char[] chs = new char[1024];
while((len = fr.read(chs)) != -1) {
fw.write(chs,0,len);
fw.flush();
}
//释放资源
fw.close();
fr.close();
}
字节
输出流转
换为字符
输出流public static void main(String[] args) throws IOException {
//method2();
//创建输入流对象
BufferedReader br = new BufferedReader(new FileReader("SystemInOutDemo.java"));
//创建输出流对象
//OutputStream os = System.out;
//Writer w = new OutputStreamWriter(System.out);//多态,父类型引用指向子类对象
//BufferedWriter bw = new BufferedWriter(w);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
//进行数据的读写
String line;//用于存储读取到的数据
while((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
}
//释放资源
bw.close();
br.close();
}
字节
输入流转
换为字符
输入流 public static void main(String[] args) throws IOException {
//创建输入流对象
InputStream is = System.in;
Reader r = new InputStreamReader(is);
//创建输出流对象
FileWriter fw = new FileWriter("a.txt");
//读写数据
char[] chs = new char[1024];
int len;
while((len = r.read(chs)) != -1) {
fw.write(chs,0,len);
fw.flush();
}
//释放资源
fw.close();
is.close();
}
response
里面返回参数的方法/*
* 打印流的特有功能:
* 自动换行 使用方法println()实现自动换行
* 自动刷新 创建PrintWriter对象时启动自动刷新开关,并且使用println等3个方法可以实现自动刷新
*
* 注意:创建FileWriter对象时boolean参数是是否追加,
* 而创建打印流对象的boolean类型参数是是否自动刷新
*/
public static void main(String[] args) throws IOException {
//创建输入流对象
BufferedReader br = new BufferedReader(new FileReader("SystemInOutDemo.java"));
//创建打印流对象
PrintWriter pw = new PrintWriter(new FileWriter("d:\\SystemInOutDemo.java"),true);
String line;//用于存储读取到的每行数据
while((line = br.readLine()) != null) {
pw.println(line);
}
//释放资源
pw.close();
br.close();
}
/*
* 解决对实现序列化接口出现的黄色警告问题
* Exception in thread "main" java.io.InvalidClassException
* 当 Serialization 运行时检测到某个类具有以下问题之一时,抛出此异常。
该类的序列版本号与从流中读取的类描述符的版本号不匹配
该类包含未知数据类型
该类没有可访问的无参数构造方法
*
*/
//读取学生对象
private static void method2() throws IOException, FileNotFoundException, ClassNotFoundException {
//创建对象输入流的对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("c.txt"));
//读取对象
Object obj = ois.readObject();
System.out.println(obj);
//释放资源
ois.close();
}
//写出学生对象
private static void method() throws IOException, FileNotFoundException {
//创建对象输出流的对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("c.txt"));
//创建的学生对象
Student s = new Student("qianqi",28);
//写出学生对象
oos.writeObject(s);
//释放资源
oos.close();
}