Skip to content

Commit

Permalink
[cocoemu] Rewrite Image IO using try-with-resources
Browse files Browse the repository at this point in the history
  • Loading branch information
Intelix8996 committed Jul 24, 2024
1 parent eb92954 commit 7e211b0
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 53 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,10 @@ public List<Integer> parse(InputStream inputStream) throws IOException {

@Override
public void save(OutputStream outputStream, List<Integer> values) throws IOException {
BufferedOutputStream bos = new BufferedOutputStream(outputStream);

for (Integer value : values) {
bos.write(value.byteValue());
try (BufferedOutputStream bos = new BufferedOutputStream(outputStream)) {
for (Integer value : values) {
bos.write(value.byteValue());
}
}

bos.flush();
}
}
28 changes: 14 additions & 14 deletions cocoemu/src/main/java/org/cdm/cocoemu/core/image/Image.java
Original file line number Diff line number Diff line change
Expand Up @@ -94,28 +94,28 @@ public int[] getIntegers() {
}

public static Image loadFromFile(String filename, ImageParser parser) throws IOException, ImageFormatException {
InputStream inputStream = Files.newInputStream(Paths.get(filename));
try (InputStream inputStream = Files.newInputStream(Paths.get(filename))) {
List<Integer> values = parser.parse(inputStream);

List<Integer> values = parser.parse(inputStream);

return new Image(values);
return new Image(values);
}
}

public static Image loadFromResources(String filename, ImageParser parser) throws IOException, ImageFormatException {
InputStream inputStream = Image.class.getResourceAsStream(filename);

if (inputStream == null) {
throw new IOException("Resource not found: " + filename);
}
try (InputStream inputStream = Image.class.getResourceAsStream(filename)) {
if (inputStream == null) {
throw new IOException("Resource not found: " + filename);
}

List<Integer> values = parser.parse(inputStream);
List<Integer> values = parser.parse(inputStream);

return new Image(values);
return new Image(values);
}
}

public void saveToFile(String filename, ImageParser parser) throws IOException {
OutputStream outputStream = Files.newOutputStream(Paths.get(filename));

parser.save(outputStream, values);
try (OutputStream outputStream = Files.newOutputStream(Paths.get(filename))) {
parser.save(outputStream, values);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,55 +9,57 @@ public class LogisimImageParser implements ImageParser {

@Override
public List<Integer> parse(InputStream inputStream) throws IOException, ImageFormatException {
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader reader = new BufferedReader(inputStreamReader);
try (
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader reader = new BufferedReader(inputStreamReader)
) {
List<Integer> values = new ArrayList<>();

List<Integer> values = new ArrayList<>();
String header = reader.readLine();

String header = reader.readLine();
if (!header.equals(LOGISIM_HEADER)) {
throw new ImageFormatException("Invalid logisim header: " + header);
}

if (!header.equals(LOGISIM_HEADER)) {
throw new ImageFormatException("Invalid logisim header: " + header);
}
while (true) {
String line = reader.readLine();

while (true) {
String line = reader.readLine();
if (line == null) {
break;
}

if (line == null) {
break;
}
if (line.startsWith("#")) {
continue;
}

if (line.startsWith("#")) {
continue;
}
int value;

int value;
try {
value = Integer.parseInt(line, 16);
} catch (NumberFormatException e) {
throw new ImageFormatException("Invalid hex number: " + line, e);
}

try {
value = Integer.parseInt(line, 16);
} catch (NumberFormatException e) {
throw new ImageFormatException("Invalid hex number: " + line, e);
values.add(value);
}

values.add(value);
return values;
}

return values;
}

@Override
public void save(OutputStream outputStream, List<Integer> values) throws IOException {
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
BufferedWriter writer = new BufferedWriter(outputStreamWriter);

writer.write(LOGISIM_HEADER);
writer.newLine();

for (Integer value : values) {
writer.write(String.format("%x", value));
try (
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
BufferedWriter writer = new BufferedWriter(outputStreamWriter)
) {
writer.write(LOGISIM_HEADER);
writer.newLine();
}

writer.flush();
for (Integer value : values) {
writer.write(String.format("%x", value));
writer.newLine();
}
}
}
}

0 comments on commit 7e211b0

Please sign in to comment.