diff --git a/src/main/java/net/knarcraft/knarlib/util/FileHelper.java b/src/main/java/net/knarcraft/knarlib/util/FileHelper.java
index 481eed2..5a9e785 100644
--- a/src/main/java/net/knarcraft/knarlib/util/FileHelper.java
+++ b/src/main/java/net/knarcraft/knarlib/util/FileHelper.java
@@ -14,7 +14,9 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
/**
@@ -80,7 +82,7 @@ public final class FileHelper {
}
/**
- * Gets a buffered writer from a string pointing to a file
+ * Gets a buffered writer from a buffered reader
*
* @param file
The file to write to
* @return A buffered writer writing to the file
@@ -101,10 +103,38 @@ public final class FileHelper {
* @return A map containing the read pairs
* @throws IOException If unable to read from the stream
*/
+ @NotNull
public static Map readKeyValuePairs(@NotNull BufferedReader bufferedReader,
@NotNull String separator,
@NotNull ColorConversion colorConversion) throws IOException {
Map readPairs = new HashMap<>();
+ List lines = readLines(bufferedReader);
+
+ for (String line : lines) {
+ int separatorIndex = line.indexOf(separator);
+ if (separatorIndex == -1) {
+ continue;
+ }
+
+ //Read the line
+ String key = line.substring(0, separatorIndex);
+ String value = ColorHelper.translateColorCodes(line.substring(separatorIndex + 1), colorConversion);
+ readPairs.put(key, value);
+ }
+
+ return readPairs;
+ }
+
+ /**
+ * Reads all lines from a buffered reader
+ *
+ * @param bufferedReader The buffered reader to read
+ * @return A list of the read lines
+ * @throws IOException If unable to read from the stream
+ */
+ @NotNull
+ public static List readLines(@NotNull BufferedReader bufferedReader) throws IOException {
+ List readLines = new ArrayList<>();
String line = bufferedReader.readLine();
boolean firstLine = true;
@@ -115,22 +145,17 @@ public final class FileHelper {
firstLine = false;
}
//Split at first separator
- int separatorIndex = line.indexOf(separator);
- if (separatorIndex == -1) {
+ if (line.isEmpty()) {
line = bufferedReader.readLine();
continue;
}
- //Read the line
- String key = line.substring(0, separatorIndex);
- String value = ColorHelper.translateColorCodes(line.substring(separatorIndex + 1), colorConversion);
- readPairs.put(key, value);
-
+ readLines.add(line);
line = bufferedReader.readLine();
}
bufferedReader.close();
- return readPairs;
+ return readLines;
}
/**