您的位置:首页 > 编程语言 > Java开发

java之文件输入输出流之文件的拷贝

2019-06-02 18:05 169 查看
1.简单文件写入数据操作
package com.feng;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class FileDemo1 {

public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub

/*
* FileOutPutStream:表示文件输入流,用渔网文件写内容
*
* 构造方法
* FileOutPutStream(String name)
* FileOutPutStream(File file)
*
* 方法
* write(int b);//每次写一个字节
*/
//1.创建文件输出流对象
//FileOutputStream fos=new FileOutputStream(new File("b.txt"));
//OutputStream otS=new FileOutputStream("a.txt");//多态写法
FileOutputStream fos=new FileOutputStream("b.txt");

//2.单个数据写入
//		fos.write(97);//a
//		fos.write(98);//b
//		fos.write(99);//c

byte[] bytes= {97,98,99,100,101};//一次性写多个字节
fos.write(bytes);

//3.关闭流
fos.close();
}

}
2.一个字节一个字节的读取(速度慢)
package com.feng;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class picure {

public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//案例拷贝图片
/*
*
*/
//先创建输入流对象和输出流对象
FileInputStream fis=new FileInputStream("C:\\Users\\Zhanglinfeng\\Desktop\\ma.png");
FileOutputStream fos=new FileOutputStream("C:\\Users\\Zhanglinfeng\\Desktop\\ma2.png");

//2.通过输入流读取数据
int b=0;
while ((b=fis.read())!=-1) {
//通过输出流写入图片数据
fos.write(b);
}
//4.关闭流
fos.close();
fis.close();
System.out.println("图片拷贝成功!");
}

}
3.一次性复制文件操作(当心内存溢出)
package com.feng;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class picture2 {
public static void main(String[] args) throws IOException {
/*
* 不建议使用这种方法
* 字节数组拷贝之available()方法
*/
File file=new File("C:\\\\Users\\\\Zhanglinfeng\\\\Desktop\\\\ma.png");
File file2=new File("C:\\\\Users\\\\Zhanglinfeng\\\\Desktop\\\\ma-副本.png");

//1.文件输入流
FileInputStream fis=new FileInputStream(file);
int size=fis.available();//返回文件长度(字节为单位)
System.out.println("size="+size);

//2.现在一次读文件大小字节
//2.1定义一个字节数组
byte[] bytes=new byte[size];
//2.2把数据读到字节数组中
fis.read(bytes);//返回读取到的实际长度

//3.把字节数组一次性写入文件
FileOutputStream fos=new FileOutputStream(file2);
fos.write(bytes);

fis.close();
fos.close();
System.out.println("图片拷贝成功");
}
}
4.最优拷贝(自定义读取长度)
package com.feng;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class picture3 {
public static void main(String[] args) throws IOException {

/*
* 选择读取的长度
*/

File file = new File("C:\\\\Users\\\\Zhanglinfeng\\\\Desktop\\\\ma.png");
File file2 = new File("C:\\\\Users\\\\Zhanglinfeng\\\\Desktop\\\\ma-副本.png");
//输入流
FileInputStream fis = new FileInputStream(file);
//输出流
FileOutputStream fos = new FileOutputStream(file2);

byte[] bytes=new byte[1024*8];//定义一个8KB的字节空数组

int len=0;
int count=0;
while ((len=fis.read(bytes))!=-1) {
fos.write(bytes, 0, len);//从零的位置读到最后一次读取的实际大小
count++;
}
fis.close();
fos.close();
System.out.println("文件读取次数"+count);
System.out.println("图片拷贝成功!");
}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: