文件复制
package com.bjpowernode.demo01;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 文件复制
* @author Administrator
*
*/
public class Test08 {
public static void main(String[] args) {
String srcFile = "D:\\course\\03-JavaSE\\video\\JavaSE-084以字节数组为单位读取.avi";
String destFile = "d:/hehe.avi";
copyFile(srcFile, destFile);
}
//一次复制一个字节数组, 自动关闭流, 异常处理
public static void copyFile(String srcFilename, String destFilename) {
try (
FileInputStream fis = new FileInputStream(srcFilename);
FileOutputStream fos = new FileOutputStream(destFilename);
){
byte [] bytes = new byte[1024];
int len = fis.read(bytes);
while( len != -1 ){
//把读到的字节都写到输出流中
fos.write(bytes, 0, len);
len = fis.read(bytes);
}
} catch (Exception e) {
}
}
//按字节进行文件复制
public static void copyFile2(String srcfilename, String destFileName) {
FileInputStream fis = null;
FileOutputStream fos = null ;
try {
fis = new FileInputStream(srcfilename);
fos = new FileOutputStream(destFileName);
int cc = fis.read();
while( cc != -1 ){
//对读到的字节cc进行处理, 把cc写到输出流中
fos.write(cc);
cc = fis.read(); //读下个字节
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if ( fis != null ) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fos != null ) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
package com.bjpowernode.demo03;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
* FileReader/FileWriter
* 字符流, 以字符为单位读写数据
* 注意:
* 1)只能读写纯文本文件
* 2)要求读写的文件编码格式与当前环境的编码格式兼容
*
* @author Administrator
*
*/
public class Test01 {
public static void main(String[] args) throws IOException {
String filename = "d:/log.txt"; //log.txt是UTF-8编码
// String filename = "d:/out.txt"; //out.txt是GBK编码, 当前环境是utf-8,乱码
// readFile(filename);
filename = "d:/hehe.txt";
writeFile( filename );
}
private static void writeFile(String filename) throws IOException {
FileWriter fw = new FileWriter(filename);
fw.write("hello");
fw.write("\r\n"); //在Windows操作系统中换行使用'\r' '\n'这两个字符
fw.write("一次可以写一个字符串");
fw.write("注意,文件的编码格式与当前环境的编码格式一致 ");
fw.close();
}
private static void readFile(String filename) throws IOException {
FileReader fr = new FileReader(filename);
//一次读取一个字符数组, 返回字符的个数, 读到文件末尾返回-1
char [] contents = new char[8];
int len = fr.read(contents);
while( len != -1 ){
//把读到的字符转换为字符串打印
System.out.print( new String(contents , 0 , len ));
len = fr.read(contents);
}
fr.close();
}
private static void readFile2(String filename) throws IOException {
FileReader fr = new FileReader(filename);
//一次读取一个字符, 返回字符的码值, 读到文件末尾返回-1
int cc = fr.read();
while(cc != -1){
System.out.print( (char)cc );
cc = fr.read();
}
fr.close();
}
}
package com.bjpowernode.demo03;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
* 使用FileReader/FileWriter实现文本文件的复制
* @author Administrator
*
*/
public class Test02 {
public static void main(String[] args) {
String srcFile = "D:/course/JavaProjects/03-JavaSE/Day08/src/com/bjpowernode/demo03/Test01.java" ;
String destFile = "d:/test01.java" ;
copyFile( srcFile, destFile);
}
//一次复制一个字符数组, 自动关闭流
private static void copyFile(String srcFile, String destFile) {
try (
FileReader fr = new FileReader(srcFile);
FileWriter fw = new FileWriter(destFile);
){
char [] contents = new char[20];
int len = fr.read(contents);
while( len != -1 ){
fw.write(contents, 0 , len);
len = fr.read(contents);
}
} catch (Exception e) {
}
}
// 一次复制一个字符, 手动关闭流, 异常处理
private static void copyFile2(String srcFile, String destFile) {
FileReader fr = null;
FileWriter fW = null;
try {
fr = new FileReader(srcFile);
fW = new FileWriter(destFile);
int cc = fr.read();
while( cc != -1){
fW.write(cc);
cc = fr.read();
}
} catch (Exception e) {
}finally {
if ( fr != null) {
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fW != null ) {
try {
fW.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
查找项目所在磁盘的绝对路径: