仅使用文件写入 – Apache Camel

主题

尽管可以使用 Apache Camel (系统集成)来方便地实现,但仅使用方便的库也能很方便地尝试一下。

不过,这里所写的“文本文件输出”,即使不引入库也很简单。

我认为。

请尝试稍微更改一些选项,它可以提供多种功能的使用。

输出文件

・将字符串”aaaa”输出到文件中
・输出文件名为”test/a4.txt”
・如果test文件夹不存在则自动创建
・覆盖写入文件


import org.apache.camel.*;
import org.apache.camel.impl.DefaultExchange;
import org.apache.camel.main.Main;

public class FileTest {

    public static Main camel = new Main();

    public static void main(String[] args) throws Exception {
        camel.start();
        ProducerTemplate producer = camel.getCamelTemplate();

        // データ作成
        Exchange exchange = new DefaultExchange(producer.getCamelContext());
        Message message = exchange.getIn();
        message.setHeader(Exchange.FILE_NAME, "test/a4.txt");
        message.setBody("aaaa"); // 出力内容がテキスト

        // ファイル出力
        String directory = ".";
        Exchange result = producer.send("file://" + directory, exchange);

        // エラーチェック
        if (result.getException() != null)
            throw result.getException();
    }

}
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-core</artifactId>
            <version>${camel-ver}</version>
        </dependency>

文件输出(文件附加)

修改下列选项 (xià liè

Exchange result = producer.send("file://" + directory + "?fileExist=Append", exchange);

如果文件存在则会出错的情况下,进行文件输出。

修改以下选项

Exchange result = producer.send("file://" + directory + "?fileExist=Fail", exchange);

文件输出(文件复制)

将下面的实现进行修改。
将文件名为filename.txt的文件复制到a4.txt。
内容是复制的,文件名是test/a4.txt。

message.setHeader(Exchange.FILE_NAME, "test/a4.txt");
message.setBody(new File("filename.txt"));

文件输出(文件复制。同时复制文件更新日期)。

将下面的实现进行更改。
文件名 filename.txt 将被复制到 a4.txt 文件中。

File file = new File("bbb.txt");
message.setBody(file);
message.setHeader(Exchange.FILE_LAST_MODIFIED, file.lastModified());
Exchange result = producer.send("file://" + directory + "?keepLastModified=true", exchange);

文件输出(文件复制。复制文件的更新日期,权限设置为777)。

将下面的实现重写。
filename.txt将被复制到a4.txt中。

File file = new File("bbb.txt");
message.setBody(file);
message.setHeader(Exchange.FILE_LAST_MODIFIED, file.lastModified());
Exchange result = producer.send("file://" + directory + "?keepLastModified=true&chmod=777", exchange);

关于其他选项,请参考 http://camel.apache.org/file2.html

HTTP(S)访问

当使用HTTPS访问时,结果将存储在响应中。


import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.impl.DefaultExchange;
import org.apache.camel.main.Main;

public class HttpTest {
    public static Main camel = new Main();

    public static void main(String[] args) throws Exception {
        camel.start();
        ProducerTemplate producer = camel.getCamelTemplate();

        // データ作成
        Exchange exchange = new DefaultExchange(producer.getCamelContext());
        Message message = exchange.getIn();

        // HTTPアクセス
        Exchange result = producer.send("https://www.google.co.jp", exchange);

        // エラーチェック
        if (result.getException() != null)
            throw result.getException();

        // 結果を取得
        String response = result.getOut().getBody(String.class);
        System.out.println(response);
    }
}

        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-http</artifactId>
            <version>${camel-ver}</version>
        </dependency>

HTTP访问(基本认证)

我可以帮你对以下内容进行中文的同义改写。

        Exchange result = producer.send("http://192.168.33.10/member/bbb.html?authMethod=Basic&authUsername=secret&authPassword=aaa", exchange);
广告
将在 10 秒后关闭
bannerAds