文件拷贝
文件拷贝,将 E:\upload\pic\lu.jpg 拷贝到 E:\
思路如图,java程序对文件边读边写
文件拷贝代码如下
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileCopy {
public static void main(String[] args) {
//完成 文件拷贝,将 E:\upload\pic\lu.jpg 拷贝到 E:\\
//思路分析
// 1. 创建文件的输入流 ,将文件读入到程序
// 2. 创建文件的输出流 ,将读取到的文件数据,写入到指定的文件
String srcFilePath = "E:\\upload\\pic\\lu.jpg";
String destFilePath = "E:\\lu.jpg";
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
try {
fileInputStream = new FileInputStream(srcFilePath);
fileOutputStream = new FileOutputStream(destFilePath);
//定义一个字节数组,提高读取效率
byte[] buf = new byte[1024];
int readLen = 0;
while ((readLen = fileInputStream.read(buf)) != -1){
//读取到后,就写入到文件 通过 fileOutputStream
//即,一边读,一边写
fileOutputStream.write(buf,0,readLen); //一定要使用这个方法,否则可能会出问题
}
System.out.println("拷贝ok~");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
//关闭输入流和输出流释放资源
if (fileInputStream != null) {
fileInputStream.close();
}
if (fileOutputStream != null) {
fileOutputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
IO流体系图 - FileReader 和 FileWriter 介绍
FileReader
import org.junit.Test;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class fileReader {
public static void main(String[] args) {
}
//使用FileReader 从e:\\news2.txt读取内容 ,并显示
/**
* 单个字符读取文件
*/
@Test
public void readFile01(){
String filePath = "e:\\news2.txt";
FileReader fileReader = null;
int data = 0;
//1. 创建FileReader对象
try {
fileReader = new FileReader(filePath);
//循环读取 使用read
while ((data = fileReader.read()) != -1){
System.out.print((char)data);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 字符数组读取文件
*/
@Test
public void readFile02(){
String filePath = "e:\\news2.txt";
FileReader fileReader = null;
int readLen = 0;
char[] buf = new char[8];
//1. 创建FileReader对象
try {
fileReader = new FileReader(filePath);
//循环读取 使用read(buf), 返回的是实际读取到的字符数
//如果返回-1,说明到文件结束
while ((readLen = fileReader.read(buf)) != -1){
System.out.print(new String(buf,0,readLen));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
FileWriter
import java.io.FileWriter;
import java.io.IOException;
public class FileWriter_ {
public static void main(String[] args) {
String filePath = "e:\\news2.txt";
FileWriter fileWriter = null;
char[] chars = {'a','b','c'};
try {
fileWriter = new FileWriter(filePath);
//write(int): 写入单个字符
fileWriter.write('H');
//write(char[]):写入指定数组
fileWriter.write(chars);
//write(char[],off,len): 写入指定数组的指定部分
fileWriter.write("天天向上".toCharArray(),0,3);
//write(string): 写入整个字符串
fileWriter.write(" 你好北京~");
//write(string,off,len):写入字符串的指定部分
fileWriter.write("上海天津",0,2);
} catch (IOException e) {
e.printStackTrace();
} finally {
//对应fileWriter ,一定要关闭流,或者flush才能真正的把数据写入到文件
try {
// fileWriter.flush(); //这个也可以
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
最后输出结果