2

我正在尝试在 JAVA 中读取 AS400 Spooled 文件。我使用此代码阅读了它。但问题是它只检索该假脱机文件的一页详细信息。但我想阅读并获取所有页面的详细信息。有谁知道怎么做?

提前致谢!

代码 :

try {
    jTextArea1.setText(null);
    DefaultTableModel DTM =(DefaultTableModel) jTable1.getModel();
    int SR = jTable1.getSelectedRow();

    String SPLFNAME =  (String) DTM.getValueAt(SR, 0);
    String SPLFNUMBERT =  (String) DTM.getValueAt(SR, 1);
    String JOBNAME =  (String) DTM.getValueAt(SR, 3);
    String JOBUSER =  (String) DTM.getValueAt(SR, 4);
    String JOBFNUMBER =  (String) DTM.getValueAt(SR, 5);

    int SPLNO = Integer.parseInt(SPLFNUMBERT);

    AS400 sys = new AS400();
    SpooledFile sf = new SpooledFile( sys,          // AS400
                                      SPLFNAME,     // splf name
                                      SPLNO,        // splf number
                                      JOBNAME,      // job name
                                      JOBUSER,      // job user
                                      JOBFNUMBER ); // job number

    PrintParameterList printParms = new PrintParameterList();
    printParms.setParameter(PrintObject.ATTR_WORKSTATION_CUST_OBJECT, "/QSYS.LIB/QWPDEFAULT.WSCST");
    printParms.setParameter(PrintObject.ATTR_MFGTYPE, "*WSCST");

    // Create a page input stream from the spooled file
    PrintObjectPageInputStream is = sf.getPageInputStream(printParms);

    BufferedReader d = new BufferedReader(new InputStreamReader(is));
    String data ="";
    while((data = d.readLine() )!=null)
    {
        System.out.println (data);

        jTextArea1.setText(jTextArea1.getText()+"\n"+data);
    }
} catch (Exception e) {
    System.out.println(e);
}
4

1 回答 1

6

PrintObjectPageInputStream有一个nextPage() 方法来移动到下一页。

BufferedReader d = new BufferedReader(new InputStreamReader(is));
String data = "";
do {
    while((data = d.readLine()) != null)
    {
        System.out.println (data);
        jTextArea1.setText(jTextArea1.getText()+"\n"+data);
    }
} while (d.nextPage());


使用PrintObjectTransformedInputStream读取整个假脱机文件而无需分页。

于 2013-08-28T05:58:40.230 回答