用python, c#, java写的文件拷贝
2010-01-06 10:43
330 查看
前一段时间试着用这三种语言简单的写了关于文件拷贝的程序,发现c#和python的api惊人的相似,对于文件的操作这两种语言非常的方便。都没有加异常的处理
C#源代码:
public static void CopyFile(string source, string destination)
{
if (string.IsNullOrEmpty(source) | string.IsNullOrEmpty(destination))
{
throw new ArgumentNullException("传入的目录不存在");
}
if (IsDirectory(source))
{
if (IsDirectory(destination))
{
var currentFiles = Directory.GetFiles(source);
if (currentFiles.Length > 0)
{
foreach (var sourceFile in currentFiles)
{
var fileName = sourceFile
.Substring(sourceFile.LastIndexOf('//') + 1);
var creatFile = Path.Combine(destination, fileName);
File.Copy(sourceFile, creatFile, true);
}
}
var currentDir = Directory.GetDirectories(source);
if (currentDir.Length > 0)
{
foreach (var dir in currentDir)
{
var dirName = dir.Substring(dir.LastIndexOf('//') + 1);
var path = Path.Combine(destination, dirName);
var creatDir = Directory.CreateDirectory(path);
}
}
}
else
{
throw new Exception("拷贝文件的目的地路径不正确,不能将目录拷贝到非目录中");
}
}
else
{
if (IsDirectory(destination))
{
var fileName = source.Substring(source.LastIndexOf('//') + 1);
File.Copy(source, destination + fileName);
}
else
{
var desName = destination.Substring(destination.LastIndexOf('//') + 1);
File.Copy(source, desName, true);
}
}
}
public static bool IsDirectory(string path)
{
if (Directory.Exists(path))
return true;
else
return false;
}
java源码:
public static void fileCopy(String source, String destination)
throws Exception {
File sourceFile = new File(source);
if (sourceFile.exists() && sourceFile.canRead()) {
if (!isFile(source)) {
if (isFile(destination)) {
throw new Exception("目标应该是文件夹");
} else {
File[] sourceFiles = sourceFile.listFiles();
for (File file : sourceFiles) {
String fileName = file.getName();
String desFileName;
if (!destination.endsWith(System
.getProperty("file.separator")))
desFileName = destination
+ System.getProperty("file.separator")
+ fileName;
else
desFileName = destination + fileName;
if (file.isFile()) {
copyFile(file.getName(), desFileName);
} else if (file.isDirectory()) {
createDirectory(desFileName);
fileCopy(source
+ System.getProperty("file.separator")
+ file.getName(), desFileName);
}
}
}
} else {
if (isFile(destination)) {
copyFile(source, destination);
} else {
String desName = source.substring(source.lastIndexOf(System
.getProperty("file.separator")));
// 注意
copyFile(source, destination
+ System.getProperty("file.separator") + desName);
}
}
} else {
throw new Exception("传入参数非法");
}
}
public static boolean isFile(String path) {
File file = new File(path);
if (file.isFile())
return true;
else
return false;
}
public static void copyFile(String from, String to) {
try {
FileInputStream fFrom;
FileOutputStream fTo;
File file = new File(to);
if (file.isFile()) {
fTo = new FileOutputStream(to);
} else {
String fileName = new File(from).getName();
new File(fileName).createNewFile();
fTo = new FileOutputStream(to+fileName);
}
fFrom = new FileInputStream(from);
byte bt[] = new byte[1024];
int c;
while ((c = fFrom.read(bt)) > 0) {
fTo.write(bt, 0, c);
}
fFrom.close();
fTo.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static boolean createDirectory(String dirName) {
return new File(dirName).mkdir();
}
python源码:
def file_copy(source, destination):
if(os.path.isdir(source)):
if(os.path.isdir(destination)):
currentFiles = os.listdir(source)
for file in currentFiles:
currentFile = os.path.join(source, file)
destFile = os.path.join(destination, file)
if(os.path.isfile(currentFile)):
shutil.copyfile(currentFile, destFile)
else:
os.mkdir(destFile)
file_copy(currentFile, destFile)
else:
print "The destination is not a directory or not exit"
else:
if(os.path.isdir(destination)):
fileName = os.path.split(source)[1]
desName = os.path.join(destination, fileName)
shutil.copy(source, desName)
else:
shutil.copy(source, destination)
C#源代码:
public static void CopyFile(string source, string destination)
{
if (string.IsNullOrEmpty(source) | string.IsNullOrEmpty(destination))
{
throw new ArgumentNullException("传入的目录不存在");
}
if (IsDirectory(source))
{
if (IsDirectory(destination))
{
var currentFiles = Directory.GetFiles(source);
if (currentFiles.Length > 0)
{
foreach (var sourceFile in currentFiles)
{
var fileName = sourceFile
.Substring(sourceFile.LastIndexOf('//') + 1);
var creatFile = Path.Combine(destination, fileName);
File.Copy(sourceFile, creatFile, true);
}
}
var currentDir = Directory.GetDirectories(source);
if (currentDir.Length > 0)
{
foreach (var dir in currentDir)
{
var dirName = dir.Substring(dir.LastIndexOf('//') + 1);
var path = Path.Combine(destination, dirName);
var creatDir = Directory.CreateDirectory(path);
}
}
}
else
{
throw new Exception("拷贝文件的目的地路径不正确,不能将目录拷贝到非目录中");
}
}
else
{
if (IsDirectory(destination))
{
var fileName = source.Substring(source.LastIndexOf('//') + 1);
File.Copy(source, destination + fileName);
}
else
{
var desName = destination.Substring(destination.LastIndexOf('//') + 1);
File.Copy(source, desName, true);
}
}
}
public static bool IsDirectory(string path)
{
if (Directory.Exists(path))
return true;
else
return false;
}
java源码:
public static void fileCopy(String source, String destination)
throws Exception {
File sourceFile = new File(source);
if (sourceFile.exists() && sourceFile.canRead()) {
if (!isFile(source)) {
if (isFile(destination)) {
throw new Exception("目标应该是文件夹");
} else {
File[] sourceFiles = sourceFile.listFiles();
for (File file : sourceFiles) {
String fileName = file.getName();
String desFileName;
if (!destination.endsWith(System
.getProperty("file.separator")))
desFileName = destination
+ System.getProperty("file.separator")
+ fileName;
else
desFileName = destination + fileName;
if (file.isFile()) {
copyFile(file.getName(), desFileName);
} else if (file.isDirectory()) {
createDirectory(desFileName);
fileCopy(source
+ System.getProperty("file.separator")
+ file.getName(), desFileName);
}
}
}
} else {
if (isFile(destination)) {
copyFile(source, destination);
} else {
String desName = source.substring(source.lastIndexOf(System
.getProperty("file.separator")));
// 注意
copyFile(source, destination
+ System.getProperty("file.separator") + desName);
}
}
} else {
throw new Exception("传入参数非法");
}
}
public static boolean isFile(String path) {
File file = new File(path);
if (file.isFile())
return true;
else
return false;
}
public static void copyFile(String from, String to) {
try {
FileInputStream fFrom;
FileOutputStream fTo;
File file = new File(to);
if (file.isFile()) {
fTo = new FileOutputStream(to);
} else {
String fileName = new File(from).getName();
new File(fileName).createNewFile();
fTo = new FileOutputStream(to+fileName);
}
fFrom = new FileInputStream(from);
byte bt[] = new byte[1024];
int c;
while ((c = fFrom.read(bt)) > 0) {
fTo.write(bt, 0, c);
}
fFrom.close();
fTo.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static boolean createDirectory(String dirName) {
return new File(dirName).mkdir();
}
python源码:
def file_copy(source, destination):
if(os.path.isdir(source)):
if(os.path.isdir(destination)):
currentFiles = os.listdir(source)
for file in currentFiles:
currentFile = os.path.join(source, file)
destFile = os.path.join(destination, file)
if(os.path.isfile(currentFile)):
shutil.copyfile(currentFile, destFile)
else:
os.mkdir(destFile)
file_copy(currentFile, destFile)
else:
print "The destination is not a directory or not exit"
else:
if(os.path.isdir(destination)):
fileName = os.path.split(source)[1]
desName = os.path.join(destination, fileName)
shutil.copy(source, desName)
else:
shutil.copy(source, destination)
相关文章推荐
- java 文件/文件夹 从一个路径拷贝到另一个路径
- java 实现 文件操作工具集。包括文件、目录树的拷贝、删除、移动、查找等工具函数
- 用Python拷贝多个文件到同一目录
- (java)从零开始之--异常处理(以文件拷贝为例)
- python使用JPype来运行java文件
- 过虑文件拷贝文件的java代码
- 【Java】利用文件输入输出流完成把一个文件夹内的所有文件拷贝的另一的文件夹的操作
- [置顶] 使用java来把一个目录下的所有文件拷贝到另外一个目录下,并且重命名
- JAVA文件拷贝(NIO实现)
- 【新手入门】Python下不喜欢使用ConfigParser去读取配置文件的Java developer
- 通过python模块实现服务器和本地机器之间快速拷贝文件
- 将java 文件夹里面的.java 文件 拷贝到temp文件夹下,并且修改后缀名为.txt
- Java FileOutputStream介绍以及文件拷贝示例
- 删除和拷贝文件递归方法(Java实现)
- Java实现分类文件拷贝1
- java复制文件的4种方式及拷贝文件到另一个目录下的实例代码
- 用python实现的可以拷贝或剪切一个文件列表中的所有文件
- Python 拷贝文件
- Python(18):对文件的操作(读写、创建、拷贝、移动、删除)
- 用python实现的可以拷贝或剪切一个文件列表中的所有文件