小弟在写一个java程序,其中一个要求是可以检索我输入的文件目录以及复制它到
一个新的目录中,我是采用多文件的方式来完成的。但当我运行时却发现我调用的函数却报错。
这是第一个函数,我想法是用菜单的形式,但这句话报错
FileUtils.copySrcPathToDestPath (srcFile, destFile);
这里的FileUtils是我第二个函数,有无大神可以看看
package shiyan3;
import java.io.File;
import java.io.FileReader;
import java.util.Scanner;
public class Notepad {
private static String filePath;
private static String message ="";
public static void main(String[] args) throws Exception {
Scanner sc =new Scanner(System.in);
System.out.println("1:打开文件 2:复制文件 3:退出");
while (true) {
System.out.println("请输入指令");
int command = sc.nextInt();
switch (command) {
case 1:
openFile();
break;
case 2:
copyFile();
break;
case 3:
exit();
break;
default:
System.out.println("输入错误");
}
}
}
private static void openFile() throws Exception {
message = "";
Scanner sc = new Scanner(System.in);
System.out.println("请输入打开文件位置:");
filePath =sc.next();
if (filePath!= null && !filePath.endsWith(".txt")) {
System.out.println("请选择文本文件!");
return;
}
FileReader in = new FileReader(filePath);
char [] charArray =new char[1024];
int len =0 ;
StringBuffer sb = new StringBuffer();
while ((len=in.read(charArray)) !=-1) {
sb.append(charArray);
}
message =sb.toString();
System.out.println("打开文件内容"+"\r\n"+message);
in.close();
}
private static void copyFile() {
Scanner sc =new Scanner(System.in);
System.out.println("请输入您刚刚打开文件的绝对路径");
String srcDirectory=sc.next();
File srcFile =new File(srcDirectory);
if (!srcFile.exists() || !srcFile.isDirectory()) {
System.out.println("无效目录");
return;
}
System.out.println("请输入您想要将文件复制到的位置:");
String destDirectory=sc.next();
File destFile=new File(destDirectory);
if(!destFile.exists() || !destFile.isDirectory()) ;{
System.out.println("无效位置!");
return;
}
FileUtils.copySrcPathToDestPath (srcFile, destFile);
}
private static void exit() {
System.out.println("您已退出系统!");
}
}
package shiyan3;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class FileUtils {
public static void copySrcPathToDestPath(File srcDir,File destDir) throws Exception {
File[] files =srcDir.listFiles();
for(int i=0;i<files.length;i++) {
File copiedFile =new File(destDir,files[i].getName());
if (files[i].isDirectory()) {
if(!copiedFile.mkdirs()) {
System.out.println("无法创建"+copiedFile);
return;
}
copySrcPathToDestPath(files[i],copiedFile);
}else {
FileInputStream input =new FileInputStream(files[i]);
FileOutputStream output =new FileOutputStream (copiedFile);
byte[] buffer = new byte[1024];
int n = 0;
while ((n= input.read(buffer))!=-1);{
output.write(buffer,0,n);
}
input.close();
output.close();
}
}
}
}