シリアル化されたファイルをソース フォルダーからターゲット フォルダーにコピーするプログラムを作成する必要があります。
ソース フォルダは C:\ter\ (5 つの異なるシリアル化されたファイル gfr.ser、asd.ser、hgf.ser、kiu.ser、uew.ser があります) ターゲット フォルダは C:\bvg\ です。
転送するファイルは gfr.ser,asd.ser,hgf.ser,kiu.ser,uew.ser
以下のプログラムを思いつきましたが、シリアル化された 1 つのファイル gfr.ser のみをコピーします。5 つのシリアル化されたファイルすべてを一度にコピーする方法を教えてください。
class ScheduledTask extends TimerTask {
public void run() {
InputStream inStream = null;
OutputStream outStream = null;
try {
File source = new File("C:\\ter\\");
File target = new File(" C:\\bvg\\");
if (target.exists()){ // Already exists. do not copy
return;
}
File[] files = source.listFiles();
for(File file:files){
inStream = new FileInputStream(file);
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();
}
}
}
public class Copycache {
public static void main(String args[]) throws InterruptedException {
Timer time = new Timer();
ScheduledTask task = new ScheduledTask();
time.schedule(task, new Date(), TimeUnit.SECONDS.toMillis(1));
}
}
私はこのアプローチを思いつきましたが、まだ機能していません。ファイルが最終的にコピーされないのでアドバイスしてください...スタックトレースの下...
java.io.FileNotFoundException: C:\bvg\ (Access is denied)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at com.bvb.ScheduledTask.run(Copycache.java:31)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)