【问题标题】:Spring integration File - reading the file by inbound channel adapter before it gets writtenSpring集成文件-在写入文件之前通过入站通道适配器读取文件
【发布时间】:2013-01-05 11:23:09
【问题描述】:

我正在测试SI sample,遇到以下问题。

我的 SI ver-1.0.4

为了便于理解,我粘贴以下内容:

fileCopyDemo-text.xml

    <file:inbound-channel-adapter id="filesIn"
                                  directory="file:${java.io.tmpdir}/spring-integration-samples/input" filename-pattern=".*\.xml">
        <integration:poller id="poller" >
            <integration:interval-trigger initial-delay="1000" interval="2000" fixed-rate="true"/>
        </integration:poller>
    </file:inbound-channel-adapter>

    <integration:service-activator input-channel="filesIn"
                                   output-channel="filesOut"
                                   ref="handler"/>

    <file:outbound-channel-adapter id="filesOut"
                                   directory="file:${java.io.tmpdir}/spring-integration-samples/output"
                                   delete-source-files="true"/>

    <bean id="handler" class="org.springframework.integration.samples.filecopy.Handler"/>

FileBasedCopyTest.java

public class FileBasedFileCopyTest {

    public static void main(String[] args)
    {
        ApplicationContext ac = new ClassPathXmlApplicationContext("/META-INF/spring/integration/fileCopyDemo-file.xml");
    }
}

Handler.java

public class Handler {

    public File handleFile(File input) {
        System.out.println("Copying file: " + input.getAbsolutePath());
        return input;
    }
}

我有另一个 java 类,它在输入文件夹中创建一个文件。

Sample.java

public static void main(String[] args) {

    try {
        String str = "SomeMoreTextIsHere";
        File newTextFile = new File("C:/Windows/Temp/spring-integration-samples/input/thetextfile.xml");

        FileWriter fw = new FileWriter(newTextFile);
        fw.write(str);
        fw.close();

    } catch (IOException iox) {
        iox.printStackTrace();
    }
}

我已经运行了 FileBasedCopyTest,它现在正在监听输入文件夹。

问题 我在调试模式下运行 Sample.java 文件和 momemt

FileWriter fw = new FileWriter(newTextFile);

执行我在 Handler.java 中接收控制,理想情况下我想在文件关闭后接收控制。这种情况如何处理?

PS:我也读过this,但不确定在这种情况下如何处理。

【问题讨论】:

    标签: java spring spring-integration


    【解决方案1】:

    这是一个常见的问题,不管你是否使用 Spring Integration。

    一种常见的方法(由 SI 在出站适配器中使用)是使用临时名称(例如 foo.txt.writing)写入文件,然后在写入后将其重命名为 foo.txt

    【讨论】:

    • 顺便说一句,1.0.4 太旧了;当前版本是 2.2.0.RELEASE。
    • 不幸的是,我坚持使用它,因为我的 spring 是 v2.5.6,目前没有带宽可以升级到 3.x 感谢您提供替代方法。
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多