Я перефразирую свой вопрос еще раз, потому что получил преданность за то, что не опубликовал ясно.Так что у меня есть папка, где я буду получать много файлов в течение нескольких минут.Мне нужно продолжать смотреть эту папку, и как только файл прибудет, я должен загрузить в S3.Размер файлов будет максимум 10 КБ, но частота будет высокой.
Вот мой код, который просматривает папку и запускает загрузку S3.Но моя проблема в том, как я могу передать файл из класса просмотра файлов в загрузчик S3.
Вот мой код для просмотра папки
public class MonitorDirectory {
public static void main(String[] args) throws IOException, InterruptedException {
Path faxFolder = Paths.get("C:\\Users\\u6034690\\Desktop\\ONEFILE\\");
WatchService watchService = FileSystems.getDefault().newWatchService();
faxFolder.register(watchService, StandardWatchEventKinds.ENTRY_CREATE);
boolean valid = true;
do {
WatchKey watchKey = watchService.take();
for (WatchEvent event : watchKey.pollEvents()) {
WatchEvent.Kind kind = event.kind();
if (StandardWatchEventKinds.ENTRY_CREATE.equals(event.kind())) {
String fileName = event.context().toString();
UploadObject onj=new UploadObject();//How to pass file path here
onj.uploadIntoS3();
System.out.println("File Created:" + fileName);
}
}
valid = watchKey.reset();
} while (valid);
}
}
Вот мой класс, где я загружаю файл в S3, которыйтеперь работает нормально
public class UploadObject {
public void uploadIntoS3() throws IOException, InterruptedException {
String bucketName = "a205381-auditxml/S3UPLOADER";
try {
AmazonS3 s3client = new AmazonS3Client();
s3client.putObject(bucketName, "hello.txt",
new File("C:\\Users\\u6034690\\Desktop\\ONEFILE\\hello.txt"));
System.out.println("Uploaded onject");
} catch (AmazonServiceException e) {
e.printStackTrace();
} catch (SdkClientException e) {
e.printStackTrace();
}
}
}
Так как передать путь к файлу из MonitorDirectory
класса в onj.uploadIntoS3();
Кроме того, еще одна последняя проверка - мой код будет поддерживать большую частоту загрузки файлов.