有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案