请不要将此问题视为重复的问题,我在文件夹ter中有少量文件,即ter文件夹位于c:驱动器中,它包含一个名为gfr.ser的seriliazed文件,因此完整路径为(C:\ ter \ gfr.ser),现在我希望将这个gfr.ser文件复制到C里面的另一个文件夹中:本身名为bvg所以我希望文件复制到路径(C:\ bvg \ gfr.ser)下面是java类,请指教我可以达到同样的目的,请指教
import java.util.TimerTask;
import java.util.Date;
import java.util.Timer;
// Create a class extends with TimerTask
public class ScheduledTask extends TimerTask {
// Add your task here
public void run() {
Runtime.getRuntime().exec("cmd.exe /c start c:\\ter\\gfr.ser");
}
}
//Main class
public class SchedulerMain {
public static void main(String args[]) throws InterruptedException {
Timer time = new Timer(); // Instantiate Timer Object
ScheduledTask st = new ScheduledTask(); // Instantiate SheduledTask class
time.schedule(task, now ,TimeUnit.SECONDS.toMillis(2));
}
}
答案 0 :(得分:0)
我想说更方便的选项可能是我在评论链接中的第一个选项(您不必将额外的库下载到您的项目中)。以下是您可以在应用程序中使用的简单代码
Path source = new File("C:\\ter\\gfr.ser").toPath();
Path target = new File("C:\\bvg\\gfr.ser").toPath();
Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
但请确保在开始合并之前存在C:\bvg
文件夹。
由于您使用的是JDK 1.6 this示例更好。我假设您正在尝试用新文件替换旧文件。以下是如何做到这一点:
import java.io.*;
import java.util.*;
import java.util.concurrent.TimeUnit;
class ScheduledTask extends TimerTask {
public void run() {
InputStream inStream = null;
OutputStream outStream = null;
try {
File targetDirectory = new File("C:\\bvg");
if (!targetDirectory.exists()) targetDirectory.mkdirs();
File source = new File("C:\\ter\\gfr.ser");
File target = new File("C:\\bvg\\gfr.ser");
inStream = new FileInputStream(source);
outStream = new FileOutputStream(target);
byte[] buffer = new byte[1024];
int length;
// copy the file content in bytes
while ((length = inStream.read(buffer)) > 0) {
outStream.write(buffer, 0, length);
}
inStream.close();
outStream.close();
System.out.println("File is copied successful!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
// Main class
public class SchedulerMain {
public static void main(String args[]) throws InterruptedException {
Timer time = new Timer();
ScheduledTask task = new ScheduledTask();
time.schedule(task, new Date(), TimeUnit.MINUTES.toMillis(2));
}
}