Obviously I'm just gonna rewrite it, but I was annoyed this doesn't pass.....
public class Solution {
static String firstFilename;
static String secondFilename;
static String thirdFilename;
static ArrayList<Integer> bytesFromFile = new ArrayList<>();
static ArrayList<Integer> splitArrayOne = new ArrayList<>();
static ArrayList<Integer> splitArrayTwo = new ArrayList<>();
public static void main(String[] args) {
ReadFilesAndInitialise();
TransferBytesToArray();
SplitTheArray();
WriteBytesToFile(secondFilename, splitArrayOne);
WriteBytesToFile(thirdFilename, splitArrayTwo);
}
public static void ReadFilesAndInitialise() {
Scanner keyboardInput = new Scanner(System.in);
firstFilename = keyboardInput.nextLine();
secondFilename = keyboardInput.nextLine();
thirdFilename = keyboardInput.nextLine();
keyboardInput.close();
}
public static void TransferBytesToArray() {
try {
FileInputStream readFile = new FileInputStream(firstFilename);
while (readFile.available() > 0) {
bytesFromFile.add(readFile.read());
}
readFile.close();
} catch (Exception e) {
System.out.println("There was an exception reading the file");
}
}
public static void SplitTheArray() {
if (bytesFromFile.size() % 2 == 0) {
int splitPoint = bytesFromFile.size() / 2;
for (int i = 0; i < splitPoint; i++) {
splitArrayOne.add(bytesFromFile.get(i));
}
for (int i = splitPoint; i < bytesFromFile.size(); i++) {
splitArrayTwo.add(bytesFromFile.get(i));
}
} else {
int splitPoint = (((bytesFromFile.size() - 1) / 2) + 1);
for (int i = 0; i < splitPoint; i++) {
splitArrayOne.add(bytesFromFile.get(i));
}
for (int i = splitPoint; i < bytesFromFile.size(); i++) {
splitArrayTwo.add(bytesFromFile.get(i));
}
}
}
public static void WriteBytesToFile(String filename, ArrayList<Integer> splitArray) {
try {
FileOutputStream writeFile = new FileOutputStream(filename);
for (Integer thisByte : splitArray) {
writeFile.write(thisByte);
}
writeFile.close();
} catch (Exception e) {
System.out.println("There was an exception writing the files");
}
}
}
package com.codegym.task.task18.task1808;
/*
Splitting a file
*/
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Scanner;
public class Solution {
static String firstFilename;
static String secondFilename;
static String thirdFilename;
static ArrayList<Integer> bytesFromFile = new ArrayList<>();
static ArrayList<Integer> splitArrayOne = new ArrayList<>();
static ArrayList<Integer> splitArrayTwo = new ArrayList<>();
public static void main(String[] args) {
ReadFilesAndInitialise();
TransferBytesToArray();
SplitTheArray();
WriteBytesToFile(secondFilename, splitArrayOne);
WriteBytesToFile(thirdFilename, splitArrayTwo);
}
public static void ReadFilesAndInitialise() {
Scanner keyboardInput = new Scanner(System.in);
firstFilename = keyboardInput.nextLine();
secondFilename = keyboardInput.nextLine();
thirdFilename = keyboardInput.nextLine();
keyboardInput.close();
}
public static void TransferBytesToArray() {
try {
FileInputStream readFile = new FileInputStream(firstFilename);
while (readFile.available() > 0) {
bytesFromFile.add(readFile.read());
}
readFile.close();
} catch (Exception e) {
System.out.println("There was an exception reading the file");
}
}
public static void WriteBytesToFile(String filename, ArrayList<Integer> splitArray) {
try {
FileOutputStream writeFile = new FileOutputStream(filename);
for (Integer thisByte : splitArray) {
writeFile.write(thisByte);
}
writeFile.close();
} catch (Exception e) {
System.out.println("There was an exception writing the files");
}
}
public static void SplitTheArray() {
if (bytesFromFile.size() % 2 == 0) {
int splitPoint = bytesFromFile.size() / 2;
for (int i = 0; i < splitPoint; i++) {
splitArrayOne.add(bytesFromFile.get(i));
}
for (int i = splitPoint; i < bytesFromFile.size(); i++) {
splitArrayTwo.add(bytesFromFile.get(i));
}
} else {
int splitPointOne = (((bytesFromFile.size() - 1) / 2) + 1);
for (int i = 0; i < splitPointOne; i++) {
splitArrayOne.add(bytesFromFile.get(i));
}
for (int i = splitPointOne; i < bytesFromFile.size(); i++) {
splitArrayTwo.add(bytesFromFile.get(i));
}
}
}
}