在代码中使用JT400进行IFS文件复制

时间:2012-06-26 10:45:19

标签: java jt400 ibm-ifs

我有这段代码可以将文件从IFS复制到本地驱动器。我想就如何改善它提出一些建议。

public void CopyFile(AS400 system, String source, String destination){
    File destFile = new File(destination);
    IFSFile sourceFile = new IFSFile(system, source);
    if (!destFile.exists()){
        try {
            destFile.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
            IFSFileInputStream in = null;
    OutputStream out = null;
    try {
         in = new IFSFileInputStream(sourceFile);
         out = new FileOutputStream(destFile);

            // Transfer bytes from in to out
            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0) {
                out.write(buf, 0, len);
            }
        } catch (AS400SecurityException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if(in != null) {
                    in.close();
                }
                if(out != null) {
                    out.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        } // end try catch finally

} // end method

其中

  • source =完整的IFS路径+文件名和
  • destination =完整本地路径+文件名

我想问一些有关以下内容的事情:

  • 一个。性能考虑

    1. 这会对主机AS400系统的CPU使用率产生很大影响吗?
    2. 这会对要使用的JVM(在内存使用方面)产生很大影响
    3. 将这包括在一个Web应用程序影响应用程序服务器性能(这是一项繁重的任务与否)?
    4. 使用它来复制多个文件(冗余运行)会对所涉及的所有资源造成很大负担吗?
  • 湾代码质量

    1. 我的IFSFileInputStream实现是否足够,或者一个简单的FileInputStream对象能很好地完成这项工作吗?

AFAIK,我只需要AS400对象来确保引用的源文件是来自IFS的文件。

我是AS400和IFS的小伙子,我想问一些有经验的人的诚实意见。

2 个答案:

答案 0 :(得分:1)

总而言之它看起来很好(没有尝试)。它不应该有明显的影响。

  • in.read()可能会返回0.测试为-1而不是。
  • 不是手动缓冲,而是使用各自的BufferedInputStream / BufferedOutputstream进行包装和输出,并一次读取一个字符并测试-1。
  • try-catch很难变得漂亮。这样做会有所改善,但您将在以后获得更多经验并学习如何做得更好。
  • 执行 NOT 吞下异常并打印它们。打电话给你的代码不知道它是否顺利。
  • 完成AS400对象后,请使用as400.disconnectAllServices()。

答案 1 :(得分:1)