指定文件复制到文件夹内
/**
* @author 南风知我意唔
* @version 1.0
* 文件复制
*/
public class MyFileSys {
public static void main(String[] args) throws IOException {
Scanner input=new Scanner(System.in);
MyFileSys sys=new MyFileSys();
System.out.print("源文件路径:");
String path=input.next();
System.out.print("目标路径:");
String newPath=input.next();
boolean b = sys.fileCopy(path, newPath);
if (b){
System.out.println("成功");
}
}
/**
*
* @param srcFile 原文件的绝对路径
* @param target 目标目录
* @return
* @throws IOException 如果因为源文件的权限问题会有可能抛出IOException
*/
public boolean fileCopy(String srcFile, String target) throws IOException {
File f1=new File(srcFile);
File f2=new File(target);
if (!f1.exists()||!f2.exists()){
throw new NotFilePathException("文件或目录不存在:"+(f1.exists()?target:(f2.exists()?srcFile:srcFile+","+target)));
}
if (!f1.isFile()){
throw new NotIsFileOrDirectoryException("不是一个文件:"+srcFile);
}
if (!f2.isDirectory()){
throw new NotIsFileOrDirectoryException("不是一个目录:"+target);
}
String s = File.separator.toString();
String[] split = srcFile.split(s+s);
//获得目标文件的名fileName
String fileName=split[split.length-1];
//获得目标文件对象
File file=new File(target+File.separator+fileName);
boolean mkdir = false;
try {
mkdir = file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
//获得目标原文件的输入流
FileInputStream fileInputStream=fileInputStream=new FileInputStream(f1);
FileOutputStream fileOutputStream=new FileOutputStream(file);
int b=0;
byte[] bytes=new byte[1024];
while ((b=fileInputStream.read(bytes))!=-1){
fileOutputStream.write(bytes,0,b);
fileOutputStream.flush();
bytes=new byte[1024];
}
fileOutputStream.close();
fileInputStream.close();
return true;
}
}
/**
* file的路径不存在
*/
class NotFilePathException extends RuntimeException {
public NotFilePathException(String message) {
super(message);
}
}
/**
* 不是一个文件或者一个目录
*/
class NotIsFileOrDirectoryException extends RuntimeException{
public NotIsFileOrDirectoryException(String message) {
super(message);
}
}