今天学习了Java的IO流,关于文件的读入和写出,主要是FileInputStream和FileOutputStream来实现,这两个流是字节流。还有字符流(FileReader和FileWriter),字符流只能处理文本文件,字节流可以处理图片,视频等。
话不多说,直接上代码。代码实现了一个文件的拷贝操作。
@Test
public void test() {
long start = System.currentTimeMillis();
String src = “F:/ioStudy/file1/1.txt”;
String dest = “F:/ioStudy/file2/2.txt”;
CopyFile(src, dest);
long end = System.currentTimeMillis();
System.out.println(“拷贝文件花费的时间为:” + (end – start) + “毫秒!”);
}
/**
* 把src文件内容,拷贝到dest文件里
* @param src
* @param dest
*/
private void CopyFile(String src, String dest) {
// 声明读取和写入的文件
File fileRead = new File(src);
File fileWrite = new File(dest);
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
try {
fileInputStream = new FileInputStream(fileRead);
fileOutputStream = new FileOutputStream(fileWrite);
byte[] read = new byte[1024];// 文件和图片,这个放可以设置的大一点
int length;
// 开始读取
while ((length = fileInputStream.read(read)) != -1) {
// 开始写入
fileOutputStream.write(read, 0, length);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != fileInputStream) {
try {
fileInputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (null != fileOutputStream) {
try {
fileOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
这里做几点说明:
1、读取的文件一定要存在,否则会报错(java.io.FileNotFoundException)。
2、写入的文件可以不存在,但是文件的上层目录一定要存在,否则也会报错(java.io.FileNotFoundException)。
3、文件写完之后,一定要调用流的close()方法,关闭流,否则写入的文件内容会是空的。