K
kevmitnick
Gast
Ich will eine Textdatei auslesen, in der zeilenweise jeweils irgendwas steht. Anschließend soll das ausgelesene an einen Mqtt Broker (Mosquitto) versendet werden, sodass ein anderer Client es empfangen kann. Der Transport via Mqtt ist mir soweit klar, ich hänge nur noch daran die entsprechenden Zeichen zu übergeben. Hier mal ein Auszug aus meinen bisherigen Klassen zum Auslesen der Datei und der anschließenden Übertragung per Mqtt.
Dieser Teil liest meine Textdatei aus, was soweit auch gut funktioniert. Der auskommentierte Teil diente lediglich der Überprüfung.
Hier steht soweit auch alles, bis auf den String der übergeben werden soll. Wenn ich beispielsweise
Prinzipiell brauch ich ja nur Zugriff auf uoData, dann kann ich ja mittels for Schleife, die ArrayList auslesen.
Aber wie komme ich an uoData ran, wenn ich mich in der Klasse Publish befinde?
Java:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class FileScanner {
public static void main (final String[] args) throws FileNotFoundException{
final List<String> uoData = new ArrayList<>();
final String pathname = "C:/Users/.../test.txt";
final File txtFile = new File(pathname);
final Scanner scanner = new Scanner(txtFile);
while(scanner.hasNextLine()) {
final String line = scanner.nextLine();
uoData.add(line);
}
scanner.close();
/*for(int i = 0; i < uoData.size(); i++) {
System.out.println(uoData.get(i));
}*/
}
}
Dieser Teil liest meine Textdatei aus, was soweit auch gut funktioniert. Der auskommentierte Teil diente lediglich der Überprüfung.
Java:
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
public class Publish {
public static void main(final String[] args) throws MqttException{
final String broker = "tcp://...";
final String topicName = "demo/1";
final int qos = 2;
final MqttClient client = new MqttClient(broker, MqttClient.generateClientId());
final MqttConnectOptions connOpts = new MqttConnectOptions();
connOpts.setCleanSession(false);
connOpts.setKeepAliveInterval(1000);
final MqttMessage message = new MqttMessage(s.getBytes());
message.setQos(qos);
message.setRetained(true);
client.connect(connOpts);
client.getTopic(topicName).publish(message);
}
}
Hier steht soweit auch alles, bis auf den String der übergeben werden soll. Wenn ich beispielsweise
String s = "HelloWorld"
setze, wird HelloWorld an den MqttBroker übergeben. Aber wie kann ich die ArrayList uoData aus dem FileScanner an den Broker übergeben?Prinzipiell brauch ich ja nur Zugriff auf uoData, dann kann ich ja mittels for Schleife, die ArrayList auslesen.
Java:
for(int i = 0; i < uoData.size(); i++){
String s = uoData.get(i);
}
Aber wie komme ich an uoData ran, wenn ich mich in der Klasse Publish befinde?