Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions AppData.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package ru.gb.lesson5;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;

public class AppData implements Serializable {
private final String[] headers;
private final int[][] data;

public AppData(String[] headers, int[][] data) {
this.headers = headers;
this.data = data;
}

public AppData(String appData) {
String[] tokens = appData.split("[\\r\n]+");
this.headers = tokens[0].split(";");
int[][] data = new int[headers.length - 1][headers.length];
for (int i = 1; i < tokens.length; i++) {
String[] values = tokens[i].split(";");
for (int j = 0; j < values.length; j++) {
data[i - 1][j] = Integer.parseInt(values[j]);
}
}
this.data = data;
}
public void writeToFile(String path) {
File file = new File(path);
writeToFile(file);
}
public void writeToFile(File file) {
try (OutputStreamWriter outputStream = new OutputStreamWriter(
new FileOutputStream(file), StandardCharsets.UTF_8)) {
outputStream.write(this.toString());
} catch (IOException e) {
e.printStackTrace();
}
}

private String headersToString() {
StringBuilder result = new StringBuilder();
for (String header : headers) {
result.append(header).append(";");
}
return result.append("\n").toString().replaceFirst(";$", "");
}
private String dataToString() {
StringBuilder result = new StringBuilder();
for (int[] values : data) {
StringBuilder resultBuilder = new StringBuilder();
for (int value : values) {
resultBuilder.append(value).append(";");
}
resultBuilder.append("\n");
result.append(resultBuilder.toString().replaceFirst(";$", ""));
}
return result.append("\n").toString();
}

@Override
public String toString() {
return headersToString() + dataToString();
}

public static AppData readFromFile(String path) {
File file = new File(path);
return readFromFile(file);
}
public static AppData readFromFile(File file) {
StringBuilder result = new StringBuilder();
try (InputStreamReader inputStream = new InputStreamReader(
new FileInputStream(file), StandardCharsets.UTF_8)) {
int count;
while ((count = inputStream.read()) != -1) {
result.append((char) count);
}
} catch (IOException e) {
e.printStackTrace();
}
return new AppData(result.toString());
}
}
17 changes: 17 additions & 0 deletions Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package ru.gb.lesson5;

public class Main {
public static final String PATH = "src/main/java/ru/gb/lesson5/demo.csv";

public static void main(String[] args) {
String[] headers = {"Value 1", "Value 2", "Value 3"};
int[][] data = { {100, 200, 123}, {300, 400, 500}};

AppData appData = new AppData(headers, data);

appData.writeToFile(PATH);
AppData receivedAppData = AppData.readFromFile(PATH);
System.out.println(receivedAppData);

}
}
3 changes: 3 additions & 0 deletions demo.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Value 1;Value 2;Value 3
100;200;123
300;400;500