[JAVA] Nur zum Schreiben von Dateien verwenden - Apache Camel

Thema

Auch wenn Sie Apache Camel (Systemverknüpfung) nicht verwenden, ist es praktisch, nur eine praktische Bibliothek zu verwenden. Versuchen Sie es also.

Die "Textdateiausgabe" in dem hier geschriebenen Beispiel ist jedoch einfach, ohne eine Bibliothek zu installieren. .. ..

Ich denke.

Ich denke, dass Sie verschiedene Funktionen nutzen können, indem Sie einfach die Optionen ändern. Probieren Sie es also aus.

Ausgabedatei

-Geben Sie die Zeichenfolge "aaaa" in eine Datei ein -Ausgabedateiname "test / a4.txt" ・ Wenn kein Testordner vorhanden ist, wird dieser automatisch erstellt. -Dateien schreiben


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();

        //Datenerstellung
        Exchange exchange = new DefaultExchange(producer.getCamelContext());
        Message message = exchange.getIn();
        message.setHeader(Exchange.FILE_NAME, "test/a4.txt");
        message.setBody("aaaa"); //Der Ausgabeinhalt ist Text

        //Dateiausgabe
        String directory = ".";
        Exchange result = producer.send("file://" + directory, exchange);

        //Fehlerüberprüfung
        if (result.getException() != null)
            throw result.getException();
    }

}

pom.Teil von XML


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

Dateiausgabe (zusätzliche Datei)

Schreiben Sie die folgenden Optionen neu

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

Dateiausgabe (Fehler, wenn Datei vorhanden ist)

Schreiben Sie die folgenden Optionen neu

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

Dateiausgabe (Kopie der Datei)

Schreiben Sie die folgende Implementierung neu. Dateiname.txt wird nach a4.txt kopiert Der Inhalt ist eine Kopie und der Dateiname lautet test / a4.txt.

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

Dateiausgabe (Datei kopieren. Änderungsdatum der Datei kopieren)

Schreiben Sie die folgende Implementierung neu. Dateiname.txt wird nach a4.txt kopiert

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);

Dateiausgabe (Datei kopieren. Änderungsdatum der Kopierdatei, Berechtigung ist 777)

Schreiben Sie die folgende Implementierung neu. Dateiname.txt wird nach a4.txt kopiert

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);

Für andere Optionen http://camel.apache.org/file2.html

HTTP (S) Zugriff

・ Das Ergebnis des Zugriffs über HTTPS wird als Antwort eingegeben


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();

        //Datenerstellung
        Exchange exchange = new DefaultExchange(producer.getCamelContext());
        Message message = exchange.getIn();

        //HTTP-Zugriff
        Exchange result = producer.send("https://www.google.co.jp", exchange);

        //Fehlerüberprüfung
        if (result.getException() != null)
            throw result.getException();

        //Ergebnisse bekommen
        String response = result.getOut().getBody(String.class);
        System.out.println(response);
    }
}

pom.Teil von xml


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

HTTP-Zugriff (Standardauthentifizierung)

Ich werde es wie folgt umschreiben

        Exchange result = producer.send("http://192.168.33.10/member/bbb.html?authMethod=Basic&authUsername=secret&authPassword=aaa", exchange);

Recommended Posts

Nur zum Schreiben von Dateien verwenden - Apache Camel
[Java] Was soll ich zum Schreiben von Dateien verwenden?
[Apache Camel] Verwenden Sie die Dateikomponente
Punkt 69: Verwenden Sie Ausnahmen nur für außergewöhnliche Bedingungen
Verwendung von binding.pry für die Ansichtsdatei
Verwenden Sie Maven nur zum Herunterladen abhängiger Bibliotheken