0

请不要将此问题视为重复问题,我在文件夹 ter 中的文件很少,即 ter 文件夹位于 c: 驱动器中,它包含一个名为 gfr.ser 的序列化文件,因此完整路径为 (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));

    }
}
4

1 回答 1

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 ,因此此示例更好。我假设您正在尝试用新文件替换旧文件。您可以这样做:

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));

    }
}
于 2013-02-02T17:07:57.647 回答