字节流:
基类:inputStream,outputStream
拷贝文件使用方法
1.直接用字节数组的方式读取
public static void main(String[] args) throws IOException {
FileInputStream inputStream = new FileInputStream("d:/zds/Foods.zip");
FileOutputStream outputStream = new FileOutputStream("d:/zds/Foods2.zip");
int len;
byte[] bs = new byte[1024];
// 开始时间
long begin = System.currentTimeMillis();
// 一次读取一个字节数组
while ((len = inputStream.read(bs)) != -1) {
outputStream.write(bs, 0, len);
}
// 用时毫秒
System.out.println(System.currentTimeMillis() - begin);// 1208毫秒
inputStream.close();
outputStream.close();
}
2.使用缓冲流bufferInputStream,bufferOutPutStream拷贝
public static void main(String[] args) throws IOException {
try {
InputStream iStream = new FileInputStream("d:/zds/Foods.zip");
BufferedInputStream biStream=new BufferedInputStream(iStream);
OutputStream oStream=new FileOutputStream("d:/zds/Foods3.zip");
BufferedOutputStream boStream =new BufferedOutputStream(oStream);
long timeBegin=System.currentTimeMillis();
int len;
byte[] arr=new byte[1024];
while((len=biStream.read(arr))!=-1){
boStream.write(arr, 0, len);
}
System.out.println(System.currentTimeMillis()-timeBegin);//271毫秒
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
批量拷贝文件(不包含文件夹)
package cn.zds;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class Copy2 {
public static void main(String[] args) throws IOException {
File file1=new File("D:\\test");
File file2=new File("E:\\web");
if(!file2.exists()){
file2.mkdir();
}
File[] files=file1.listFiles();
for (File file : files) {
File newfile = new File(file2,file.getName());
copfile(file,newfile);
}
//
}
private static void copfile(File file1, File file2) throws IOException {
BufferedInputStream bInputStream=new BufferedInputStream(new FileInputStream(file1));
BufferedOutputStream bOutputStream =new BufferedOutputStream(new FileOutputStream(file2));
byte[] b=new byte[1024];
int len;
while ((len=bInputStream.read(b))!=-1) {
bOutputStream.write(b, 0, len);
}
bInputStream.close();
bOutputStream.close();
}
}
批量拷贝(包含文件夹)
- A:封装数据源File
- B:封装目的地File
- C:判断该File是文件夹还是文件
- a:是文件夹
- 就在目的地目录下创建该文件夹
- 获取该File对象下的所有文件或者文件夹File对象
- 遍历得到每一个File对象
- 回到C
- b:是文件
- 就复制(字节流)
package cn.zds;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class Copy3 {
public static void main(String[] args) throws IOException {
File file1=new File("D:\\test");
File file2=new File("E:\\web");
copFolder(file1,file2);
//
}
private static void copFolder(File srcFile, File destFile) {
if(srcFile.isDirectory())//是文件夹
{
File newFolder = new File(destFile, srcFile.getName());
newFolder.mkdir();//在目标目录创建此文件夹
File[] files=srcFile.listFiles();
for (File file : files) {//遍历该文件夹下的文件,递归的判断创建
copFolder(file,newFolder);
}
}
else {//是文件就copy
File newFile = new File(destFile,srcFile.getName());
try {
copfile(srcFile,newFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private static void copfile(File file1, File file2) throws IOException {
BufferedInputStream bInputStream=new BufferedInputStream(new FileInputStream(file1));
BufferedOutputStream bOutputStream =new BufferedOutputStream(new FileOutputStream(file2));
byte[] b=new byte[1024];
int len;
while ((len=bInputStream.read(b))!=-1) {
bOutputStream.write(b, 0, len);
}
bInputStream.close();
bOutputStream.close();
}
}
字符流:
读取文件内容:
public static void main(String[] args) {
File file = new File("D:\\lzq/java.txt");
reader(file);
}
/**
* 读取文件内容
* @param file
*/
public static void reader(File file) {
Reader read = null; //声明Reader对象
char[] c = new char[(int)file.length()]; //根据文件大小定义数组
try {
read = new FileReader(file); //使用FileReader实例化Reader
read.read(c); //读取内容到数组
read.close();
}catch(IOException e) {
System.out.println("读取失败");
e.printStackTrace();
}
System.out.println(c);
}
向文件写入内容;
/**
* 向文件写入内容
* @param file
*/
public static void writer(File file) {
String str = "java";
char[] c = str.toCharArray(); //将字符串转换为char数组
try {
Writer writer = new FileWriter(file); //实例化对象
writer.write(c); //写入数据
writer.close();
System.out.println("写入成功");
}catch(IOException e) {
System.out.println("写入失败");
e.printStackTrace();
}
}