summaryrefslogtreecommitdiff
path: root/src/main/java/no/eliashaugsbakk/kompilator/IO
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/no/eliashaugsbakk/kompilator/IO')
-rw-r--r--src/main/java/no/eliashaugsbakk/kompilator/IO/File.java4
-rw-r--r--src/main/java/no/eliashaugsbakk/kompilator/IO/FileReaderWriter.java39
-rw-r--r--src/main/java/no/eliashaugsbakk/kompilator/IO/FileReaderWriterException.java7
3 files changed, 50 insertions, 0 deletions
diff --git a/src/main/java/no/eliashaugsbakk/kompilator/IO/File.java b/src/main/java/no/eliashaugsbakk/kompilator/IO/File.java
new file mode 100644
index 0000000..48f6edf
--- /dev/null
+++ b/src/main/java/no/eliashaugsbakk/kompilator/IO/File.java
@@ -0,0 +1,4 @@
+package no.eliashaugsbakk.kompilator.IO;
+
+public record File(String fileName, String fileBody) {
+}
diff --git a/src/main/java/no/eliashaugsbakk/kompilator/IO/FileReaderWriter.java b/src/main/java/no/eliashaugsbakk/kompilator/IO/FileReaderWriter.java
new file mode 100644
index 0000000..b25b719
--- /dev/null
+++ b/src/main/java/no/eliashaugsbakk/kompilator/IO/FileReaderWriter.java
@@ -0,0 +1,39 @@
+package no.eliashaugsbakk.kompilator.IO;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+public class FileReaderWriter {
+
+ public File readFile(String inputFilePath) throws FileReaderWriterException {
+ Path path = Path.of(inputFilePath);
+
+ String rawName = path.getFileName().toString();
+ int dotIndex = rawName.lastIndexOf('.');
+ String fileName = (dotIndex == -1) ? rawName : rawName.substring(0, dotIndex);
+
+ try {
+ String fileBody = Files.readString(path);
+ return new File(fileName, fileBody);
+ } catch (IOException e) {
+ throw new FileReaderWriterException("Failed to read file: " + inputFilePath, e);
+ }
+ }
+
+ public void writeFile(File file) throws FileReaderWriterException {
+ try {
+ Files.writeString(Path.of(file.fileName()), file.fileBody());
+ } catch (IOException e) {
+ throw new FileReaderWriterException("Failed to write file: " + file.fileName(), e);
+ }
+ }
+
+ public void deleteFile(String filePath) throws FileReaderWriterException {
+ try {
+ Files.delete(Path.of(filePath));
+ } catch (IOException e) {
+ throw new FileReaderWriterException("Could not delete file: " + filePath, e);
+ }
+ }
+}
diff --git a/src/main/java/no/eliashaugsbakk/kompilator/IO/FileReaderWriterException.java b/src/main/java/no/eliashaugsbakk/kompilator/IO/FileReaderWriterException.java
new file mode 100644
index 0000000..1cc5bb8
--- /dev/null
+++ b/src/main/java/no/eliashaugsbakk/kompilator/IO/FileReaderWriterException.java
@@ -0,0 +1,7 @@
+package no.eliashaugsbakk.kompilator.IO;
+
+public class FileReaderWriterException extends Exception {
+ public FileReaderWriterException(String message, Exception e) {
+ super("FileReaderWriter: " + message, e);
+ }
+}