Cześć mam plik xyz.yml a w pliku
x: 10
y: 5
z: 2
chciałbym wczytać te wartości teraz do zmiennych int x,y,z tylko nie mam pojęcia jak to zrobić. Mógłby ktoś pomóc?
Cześć mam plik xyz.yml a w pliku
x: 10
y: 5
z: 2
chciałbym wczytać te wartości teraz do zmiennych int x,y,z tylko nie mam pojęcia jak to zrobić. Mógłby ktoś pomóc?
Java nie ma w standardzie parsera yaml (albo o nim nie wiem). Możesz to zrobić np. za pomocą jacksona, jakimś:
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
MyClass x = mapper.readValue(new File("xyz.yml"), MyClass.class);
Gdzie MyClass
to klasa która opisuje strukturę tego jamla, np.
class MyClass {
@JsonProperty
private Integer x;
@JsonProperty
private Integer y;
@JsonProperty
private Integer z;
}
edit: potrzeba do tego
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>2.13.1</version>
</dependency>
Doczytaj o java.util.Scanner i Pattern.
Kurna wymyślacie jakieś java util Scanner a libka jest od tego: https://www.baeldung.com/java-snake-yaml
Nie lepiej plik wrzucić w resources i wczytać properties jako resource?
import java.util.*;
import java.io.*;
import java.util.stream.*;
import java.nio.file.Paths;
import java.nio.file.Path;
import java.nio.file.Files;
class YmlTest {
public static void main(String[] args) throws IOException {
Path path = Paths.get("xyz.yml");
String contents = Files.lines(path).collect(Collectors.joining("\n"));
System.out.println("Input:");
System.out.println(contents);
contents = contents.replace(':','=');
final Properties props = new Properties();
props.load(new StringReader(contents));
int x = Integer.valueOf(props.getProperty("x"));
int y = Integer.valueOf(props.getProperty("y"));
int z = Integer.valueOf(props.getProperty("z"));
System.out.println("Parsed:");
System.out.printf("x: %d, y: %d, z: %d%n", x, y, z);
}
}
Uruchomienie:
piotr@piotr-Prec-M47:~/progs/test/java/yml_file$ java YmlTest.java
Input:
x: 10
y: 5
z: 2
Parsed:
x: 10, y: 5, z: 2