对IO流的操作(文件大小,拷贝,移动,删除)
Posted ljyhyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对IO流的操作(文件大小,拷贝,移动,删除)相关的知识,希望对你有一定的参考价值。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.SequenceInputStream;
class LjyFileClass {
/*LjyFileClass工具类使用需知:
*
* 1.计算文件大小:long size = getFileSize(File file)
* file:传入一个文件路径,计算文件夹中所有的文件大小,
* 返回值是一个long类型的字节数。
*
*
* 2.拷贝文件夹:getCopyFile(File filePath,File newFilePath)
* filePath: 需要拷贝的文件路径,
* newFilePath: 存放文件的路径
* 使用时只需要传入要拷贝的路径和一个存放的路径就可以了。
*
*
* 3.字节流拷贝图片,视频,音频等文件:getCopyFileContent(File file,File file2)
* file: 要拷贝的文件路径
* file2: 存放路径
* 字节流适用于拷贝图片,视频,音频等一些不需要解码的文件,
* 使用时只需要传入要拷贝的路径和一个存放的路径就可以了。
*
*
* 4.字符流拷贝文件:getFileRead(File file , File file2)
* file: 要拷贝的文件路径
* file2: 存放路径
* 字符流适用于拷贝一些需要解码操作的文件,但是不能实用字符流来拷贝图片,音频,
* 视频等。使用字符流可能会导致文件丢失。而不能正常打开。
*
*
* 5.MergeFile(File file , File file2,File file3):合并两个文件
* file: 需要合并的文件路径
* file2: 需要合并的文件路径
* file3: 合并之后的文件路径
*
* 该方法可以实现两个文件的拼接,并且返回一个新的文件。
*
*
* 6.MoveFileToNewPath(File file, File file2):把目标文件移动到指定的路径下
* file: 需要移动的文件路径
* file2: 接收移动过来的文件路径
* 该方法可以把一个文件夹移动到指定的路径下,并且删除原来的文件。
*
*
* 7.getDeleteFile(File file):删除整个文件夹
* file:要删除的文件夹路径
* 该方法可以实现整个文件夹的删除工作。
*
*
*
* 方法摘要:
* 1.getFileSize(File file) 返回文件大小
* 2.getCopyFile(File filePath,File newFilePath) 拷贝文件夹
* 3.getCopyFileContent(File file,File file2) 字节流拷贝图片,视频,音频等文件
* 4.getFileRead(File file , File file2) 字符流拷贝文件
* 5.MergeFile(File file , File file2,File file3) 合并两个文件
* 6.MoveFileToNewPath(File file, File file2) 把目标文件移动到指定的路径下
* 7.getDeleteFile(File file) 删除整个文件夹
*/
//获取文件大小,只需传一个文件路径的实参,返回值是文件大小(long类型),返回值只表示文件的字节大小。
public long getFileSize(File file){
long fileSize = 0;
File[] files = file.listFiles();
if (file.isFile()) {
return file.length();
}
if (file != null) {
for (File file2 : files) {
fileSize += getFileSize(file2);
}
}
return fileSize;
}
//把一个文件夹拷贝到另一个文件夹里
public void getCopyFile(File filePath,File newFilePath) throws IOException{
File[] files = filePath.listFiles();
File tempFile = null;
if (!(newFilePath.isDirectory())) {
newFilePath.mkdir();
}
if (filePath != null) {
for (File file : files) {
if (file.isDirectory()) {
String string = file.getName();
tempFile = new File(newFilePath+"\\"+string);
tempFile.mkdir();
getCopyFile(file, tempFile);
}else if (file.isFile()) {
String string = file.getName();
tempFile = new File(newFilePath+"\\"+string);
tempFile.createNewFile();
getCopyFileContent(file,tempFile);
}
}
}
}
//拷贝图片,视频,音频等不需解码的文件
public void getCopyFileContent(File file,File file2) throws IOException{
FileInputStream inputStream = new FileInputStream(file);
FileOutputStream outputStream = new FileOutputStream(file2);
byte[] b = new byte[1024];
int count = 0;
while ((count = inputStream.read(b)) != -1) {
outputStream.write(b,0,count);
}
inputStream.close();
outputStream.close();
}
//用字符流来拷贝,当用此方法来拷贝图片,视频,音频等文件时,这些文件将不能被打开。
public void getFileRead(File file , File file2) throws IOException {
FileReader fileReader = new FileReader(file);
FileWriter fileWriter = new FileWriter(file2);
char[] b = new char[1024];
int count = 0;
while ((count = fileReader.read(b)) != -1) {
fileWriter.write(b,0,count);
}
fileWriter.close();
fileReader.close();
}
//合并文件
public void MergeFile(File file , File file2, File file3) throws IOException {
FileInputStream fileInputStream = new FileInputStream(file);
FileInputStream fileInputStream2 = new FileInputStream(file2);
FileOutputStream outputStream = new FileOutputStream(file3);
SequenceInputStream inputStream = new SequenceInputStream(fileInputStream, fileInputStream2);
byte[] b = new byte[1024];
while (inputStream.read(b) != -1) {
outputStream.write(b);
}
outputStream.close();
inputStream.close();
}
//把文件移动到新的路径下 file:要移动的路径 file2:接收移动的路径
public void MoveFileToNewPath(File file, File file2) throws IOException{
File file3 = new File(file2.getPath() + "\\" + file.getName());
//把文件复制到指定的路径上
getCopyFile(file, file3);
//清空原来的文件夹并且删除
getDeleteFile(file);
}
//递归删除整个文件夹
public void getDeleteFile(File file){
File[] files = file.listFiles();
if (file != null) {
for (File file2 : files) {
if (file2.isDirectory()) {
getDeleteFile(file2);
}else {
file2.delete();
}
}
}
file.delete();
}
//剪切文件
public void ShearFile() {
}
}
public class demo {
/**
* 1.创建文件
* 2.创建文件夹
* 3.查找以结尾
* 4.判断是否是一个文件
* 5.判断是否是一个文件夹
* 6.
*
*/
public static void main(String[] args) throws IOException {
LjyFileClass ljyFileClass = new LjyFileClass();
// File file = new File("C:\\Users\\PC-LUO\\Desktop\\新建文件夹\\1.jpg");
// File file2 = new File("C:\\Users\\PC-LUO\\Desktop\\新建文件夹\\新建文件夹\\1.jpg");
//
// ljyFileClass.getCopyFileContent(file, file2);
File file3 = new File("C:\\1111");
file3.mkdir();
}
}
以上是关于对IO流的操作(文件大小,拷贝,移动,删除)的主要内容,如果未能解决你的问题,请参考以下文章