1 分别使用字符输入输出流FileWriter/FileReader
2 文件输入输出流FileInputStream/FileOutputStream
3文件缓冲流BufferedInputStream/BufferedOutputStream
4字符缓冲流BufferedWriter/BufferedReader
4种方式实现
1、 package com.qiku.day21; import java.io.FileReader; import java.io.FileWriter; public class CopyDemo02 { public static void main(String[] args) throws Exception { //模拟复制粘贴的过程 //通过Reader 读取目标文件中的内容 //通过writer 将读取到的内容写入指定位置 FileReader reader = new FileReader("111.txt"); FileWriter writer = new FileWriter("111副本_2.txt"); long start=System.currentTimeMillis(); char[] sc = new char[1024]; while (true) { int read = reader.read(sc);//返回读取数组里元素的个数 //qwer tyer if (read != -1) { //将读取的内容写入指定位置 //由于最后一次的读取,很可能没有将数组读满,会有倒数第二次读取的残留 //为例避免残留数据 需要:实际上读了几个,就写几个 writer.write(sc,0, read); } else {//说明读完了 break; } } reader.close(); writer.close(); long end=System.currentTimeMillis(); System.out.println("赋值完毕 "+(end-start)); } }
2、
package com.qiku.day21; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Arrays; import static java.lang.System.in; public class FileInPutStreamDemo01 { public static void main(String[] args) throws Exception { //java.io.FileInputStream;类 //主要用于从输入流中以字节流的方式读取文件数据等 FileInputStream fileInputStream = new FileInputStream("2.txt"); //读取单个字节,并返回 -1 代表读完了 System.out.println(in.read());//in.read()里面空参 代表读一个字节 byte[] bytes=new byte[3]; //一次性最多读bytes.length个字节,并将督导的内容存入该数组 -1代表读完了 System.out.println(in.read(bytes));//读到的字节的个数 System.out.println(Arrays.toString(bytes)); System.out.println(in.available());//获取关联文件的大小 byte[] by=new byte[20]; //一次性读16个字节 从下表为1处开始 System.out.println(in.read(by,1,16));//读 System.out.println(Arrays.toString(by)); } }
3、
package com.qiku.day21; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; public class BufferdeOutPutStreamDemo01 { public static void main(String[] args) throws Exception { //BufferedOutputStream 缓冲输出流 目的:提高输出流的写出效率 //创建一个文件输出流bos,并将文件输出流fos,交给了bos来提高写的效率 FileOutPutStream fos= new FileOutPutStream("E:\\KwDownload\\song\\2-2.lrc"); //创建了一个缓冲输出流bos,并将文件输出流fos,交给了bos来提高 BufferedOutputStream bos = new BufferedOutputStream(fos); FileInputStream fis =new FileInputStream("E:\KwDownload\song\2.lrc"); BufferedOutputStream bis =new BufferedOutputStream(fis); long start=System.currentTimeMillis(); while (true){ int r=bis.read(); if (r==-1){ break; }else { bos.write(r); } } long end =System.currentTimeMillis(); System.out.println("wanbi"+(end-start)); bis.close(); bos.close(); } }
4、
package com.qiku.yrc.work21;
import java.io.*;
public class BufferWriterAndReader {
public static void main(String[] args) throws Exception {
FileReader fr= new FileReader("dd.txt");
BufferedReader br = new BufferedReader(fr);
FileWriter fw=new FileWriter("dddd.txt");
BufferedWriter bw=new BufferedWriter(fw);
bw.write("偶像练习生 蔡徐坤申请出战");
bw.newLine();//换行符
String s=br.readLine();
System.out.println(s);
bw.close();
br.close();
}
}