Fork me on GitHub

Java项目开发中常用的程序

记录一些Java项目开发中常用的程序。

文件复制

因为要实现任意文件的复制,所以必须使用字节流FileInputStream和FileOutputStream实现。
使用的是FileInputStream的read()方法和FileOutputStream的write()方法。
注:文件上传中经常会使用到此代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyFile {
public static void main(String[] args){
// 设置开始时间
long startTime=System.currentTimeMillis();

File inFile=new File("D:\\xje\\java测试文件操作\\testFile\\pkqIcon.JPG"); //这是要复制的文件
if(!inFile.exists()){ // 若文件不存在,则输出错误信息,退出程序
System.out.println("源文件不存在,请输出正确的文件路径");
System.exit(1);
}

File outFile=new File("D:\\xje\\java测试文件操作\\out.JPG");
if(!outFile.getParentFile().exists()){// 如果输出文件的父目录不存在,则创建父目录
outFile.getParentFile().mkdirs();
}

// 实现文件复制操作
try(FileInputStream fis=new FileInputStream(inFile);
FileOutputStream fos=new FileOutputStream(outFile)){
int temp=0; // 保存每次读取的数据长度
byte[] data=new byte[1024]; // 每次读取1024,也就是1k字节
// 将每次读取进来的数据保存在字节数组里面,并且返回读取的个数
while((temp=fis.read(data))!=-1){ // 循环读取数据
fos.write(data,0,temp); // 将数据输出到指定文件中
}

// 设置结束时间(毫秒数)
long endTime=System.currentTimeMillis();
System.out.println("复制文件所花时间为:"+(endTime-startTime));

}catch(IOException e){
e.printStackTrace();
}
}
}

**注:日后开发中,只要操作的是文本数据(不是二进制数据),输出时都使用打印流PrintWriter,输入时都使用扫描流Scanner(或者使用字符缓存区输入流BufferedReader)。