IFS에서 로컬 드라이브로 파일을 복사하는 코드 조각이 있습니다. 그리고 더 나은 방법에 대한 제안을하고 싶습니다.코드에서 JT400을 사용하는 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
경우
- 소스 = 전체 IFS 경로 + 파일 이름과
- 대상 = 전체 로컬 경로 + 파일 이름
나는 다음에 대한 몇 가지 묻고 싶다 :
a. 성능 고려 사항
- 이것은 호스트 AS400 시스템의 CPU 사용량에 큰 영향을 줍니까?
- (메모리 사용 측면에서) 사용되는 JVM에 큰 영향을 미칩니 까?
- 웹 응용 프로그램이 응용 프로그램 서버 성능에 영향을 미칠 수 있습니까?
- 여러 파일을 복사 (중복 실행)하여 관련된 모든 리소스에 큰 부담이됩니까?
b. 코드 품질
- IFSFileInputStream을 제대로 구현했는지 또는 간단한 FileInputStream 객체가 작업을 멋지게 처리 했습니까?
AFAIK, 방금 확인 참조 소스 파일이 IFS에서 파일이 확인하기 위해 AS400 오브젝트를 필요로했다.
저는 AS400 및 IFS에서 멍청한 사람입니다. 경험 많은 사람들로부터 정직한 의견을 묻고 싶습니다.
는 신속한 답변 Thorbjørn 주셔서 너무 감사드립니다. 나는 또한 as400.disconnectAllServices() 부분을 생각했고 그것은 내 클래스에 대한 내 정리 메소드 (destroy)의 일부가 될 것이다. 그리고 예, try-catch 블록을 더 잘 처리 할 수있는 방법을 곧 찾을 수 있기를 바랍니다. 또한 printStackTrace 대신 log4j를 사용하여 예외를 기록 할 계획입니다. 하지만 예외를 처리하고 호출 코드를 멋지게 알리는 방법은 무엇입니까? 다시 한번 감사드립니다. – aEtherv0id