ファイルを別の場所に非同期で移動する方法を知りたいのですが、基本的に、プログラムの 1 つは一時ファイルにデータを追加し続け、別のプログラムはコピー先の一時ファイルの事前定義されたサイズを超えないようにサイズをチェックしています。永続的なディレクトリと以前のプログラムは、新しい一時ファイルを作成し続け、書き込みを続行する必要があります。その間にコピーされたデータが失われることはありません。次のコードで同じことをしようとしましたが、データの一部が間違っているか失われています。
import java.io.*;
import org.apache.log4j.Logger;
public class FileSizeMonitor {
static Logger log = Logger.getLogger(FileSizeMonitor.class.getName());
private static final String tempDirectory = "c:\\my-temp-dir";
private static final String tempFileName = tempDirectory + "\\" + "my-temp-file.txt";
void FileMonitor() {
File file = new File(tempFileName);
double bytes = 0;
if (file.exists()) {
bytes = file.length();
if (bytes > 2458.0001) {
int length;
byte[] buffer = new byte[1024];
try {
InputStream inStream = null;
OutputStream outStream = null;
String source = tempFileName;
String target = "C:\\Users\\data";
File sourceFile = new File(source);
String fileName = sourceFile.getName();
File targetFile = new File(target + fileName);
inStream = new FileInputStream(sourceFile);
outStream = new FileOutputStream(targetFile);
log.debug("File size exceded the predefined limit,moving the file data to C:\\Users\\data");
while ((length = inStream.read(buffer)) > 0) {
outStream.write(buffer, 0, length);
}
inStream.close();
outStream.close();
sourceFile.delete();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
}