Сложная проблема источника данных в Dynamics AX

Мой способ достичь этого - создать класс обертки ZipInputStream, который будет обрабатывать, который будет обеспечивать только поток текущей записи:

Класс оболочки:

public class ZippedFileInputStream extends InputStream {

    private ZipInputStream is;

    public ZippedFileInputStream(ZipInputStream is){
        this.is = is;
    }

    @Override
    public int read() throws IOException {
        return is.read();
    }

    @Override
    public void close() throws IOException {
        is.closeEntry();
    }

}

Использование этого:

    ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream("SomeFile.zip"));

    while((entry = zipInputStream.getNextEntry())!= null) {

     ZippedFileInputStream archivedFileInputStream = new ZippedFileInputStream(zipInputStream);

     //... perform whatever logic you want here with ZippedFileInputStream 

     // note that this will only close the current entry stream and not the ZipInputStream
     archivedFileInputStream.close();

    }
    zipInputStream.close();

Одно из преимуществ такого подхода: InputStreams передаются в качестве аргументов методам, которые обрабатывают их, и эти методы имеют тенденцию немедленно закрывать входной поток после того, как они будут выполнены с ним.

1
задан Jan B. Kjeldsen 8 October 2010 в 10:23
поделиться

1 ответ

Вы можете использовать значения массивов в диапазонах запросов, предоставляя идентификаторы полей, используя функцию fieldID2Ext.

Вы можете построить представление и применить к нему настройки.

0
ответ дан 2 September 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: