SFTP中每个文件的java线程
我在SFTP服务器中读取文件并进行一些处理,问题是我的代码一个文件一个文件地运行,每个文件需要4到6个小时,我可以使用线程同时运行每个文件吗
这是我在函数中的代码
sftpChannel = (ChannelSftp) channel;
sftpChannel.cd("/upload");
Vector filelist = sftpChannel.ls("/upload/test");
List<String> fileNameList = new ArrayList<String>();
String fileName = null;
for (int i = 0; i < filelist.size(); i++) {
ChannelSftp.LsEntry entry = (ChannelSftp.LsEntry) filelist.get(i);
if (entry.getFilename().startsWith("test")) {
fileName = entry.getFilename();
fileNameList.add(fileName);
}
}
if (fileNameList != null && !fileNameList.isEmpty()) {
for (int i = 0; i < fileNameList.size(); i++) {
fileSFTP = sftpChannel.get("/upload/test/" + fileNameList.get(i));
renamedFile = fileNameList.get(i);
// Open the file
String filename = "OTL";
File file = File.createTempFile(filename, ".zip");
// write the inputStream to a FileOutputStream
outputStream
= new FileOutputStream(file);
int read = 0;
byte[] bytes = new byte[2056];
while ((read = fileSFTP.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
if (file == null) {
return null;
}
JAXBContext jaxbContext = JAXBContext.newInstance(Message.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
itemObj = (Message) jaxbUnmarshaller.unmarshal(file);
buildJsonRequest(itemObj);
sftpChannel.rename("/upload/test/" + renamedFile,
"/upload/Loaded Test/" + renamedFile);
sftpChannel.cd("/upload/");
共 (0) 个答案