/**
* 拷贝整个文件目录
* @param source 源目录、文件
* @param destination 目的目录、文件
*/
public static void copyFiles(File source, File destination) {
if (!source.exists()) {
//Log.warn(source.getAbsolutePath() + " 源文件或源路径不存在")
return
}
if (destination.isFile()) {
//Log.warn(destination.getAbsolutePath() + " 目标不应该是文件, 应该是路径")
return
}
else
destination.mkdirs()
//如果是文件
if (source.isFile()) {
try {
String filename = destination.getAbsolutePath() + File.separator + source.getName()
FileInputStream fis = new FileInputStream(source)
File file = new File(filename)
if (file.exists()) {
file.delete()
}
FileOutputStream fos = new FileOutputStream(file)
if(!StreamHelper.toOutputStream(fis, fos)) {
return
}
fos.close()
fis.close()
Log.debug("复制 " + source.getAbsolutePath() + " 到 " + filename)
return
}catch (IOException ex) {
Log.error(ex)
return
}
}
//如果是目录
else {
File[] files = source.listFiles()
for (int i = 0 i < files.length i++) {
if (files[i].isDirectory()) {
String path = destination.getAbsolutePath() + File.separator + files[i].getName()
File folder = new File(path)
copyFiles(files[i], folder)
}else {
copyFiles(files[i], destination)
}
}
}
}
/***
复制单个文件
*
@param
oldPath
String
原文件路径
如:c:/fqf.txt
*
@param
newPath
String
复制后路径
如:f:/fqf.txt
*
@return
boolean
*/
public
void
copyFile(String
oldPath,
String
newPath)
{
try
{
int
bytesum
=
0
int
byteread
=
0
File
oldfile
=
new
File(oldPath)
if
(oldfile.exists())
{
//文件存在时
InputStream
inStream
=
new
FileInputStream(oldPath)
//读入原文件
FileOutputStream
fs
=
new
FileOutputStream(newPath)
byte[]
buffer
=
new
byte[1444]
int
length
while
(
(byteread
=
inStream.read(buffer))
!=
-1)
{
bytesum
+=
byteread
//字节数
文件大小
System.out.println(bytesum)
fs.write(buffer,
0,
byteread)
}
inStream.close()
}
}
catch
(Exception
e)
{
System.out.println("复制单个文件 *** 作出错")
e.printStackTrace()
}
}
/**
*
复制整个文件夹内容
*
@param
oldPath
String
原文件路径
如:c:/fqf
*
@param
newPath
String
复制后路径
如:f:/fqf/ff
*
@return
boolean
*/
public
void
copyFolder(String
oldPath,
String
newPath)
{
try
{
(new
File(newPath)).mkdirs()
//如果文件夹不存在
则建立新文件夹
File
a=new
File(oldPath)
String[]
file=a.list()
File
temp=null
for
(int
i
=
0
i
<
file.length
i++)
{
if(oldPath.endsWith(File.separator)){
temp=new
File(oldPath+file[i])
}
else{
temp=new
File(oldPath+File.separator+file[i])
}
if(temp.isFile()){
FileInputStream
input
=
new
FileInputStream(temp)
FileOutputStream
output
=
new
FileOutputStream(newPath
+
"/"
+
(temp.getName()).toString())
byte[]
b
=
new
byte[1024
*
5]
int
len
while
(
(len
=
input.read(b))
!=
-1)
{
output.write(b,
0,
len)
}
output.flush()
output.close()
input.close()
}
if(temp.isDirectory()){//如果是子文件夹
copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i])
}
}
}
catch
(Exception
e)
{
System.out.println("复制整个文件夹内容 *** 作出错")
e.printStackTrace()
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)