/home/caleb/ASDV-Java/Semester 3/Assignments/MP5-Binary-Files_CalebFontenot/src/com/calebfontenot/mp5/files_calebfontenot/Exercise17_03.java
/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package com.calebfontenot.mp5.files_calebfontenot;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 *
 * @author caleb
 */
public class Exercise17_03 {

    static int fileSize = Math.abs((int) (Math.random() * 1024));

    public static void writeData()
    {
        try (FileOutputStream fileWrite = new FileOutputStream("Exercise17_03.dat")) {
            // Write a unspecified number of integers into the file.
            // Must be positive!
            int randInt = 0;
            for (int i = 0; i < fileSize; ++i) {
                randInt = (int) (Math.random() * 10);
                fileWrite.write(randInt);
            }
        } catch (IOException ex) {
            System.out.println(ex);
        }
        System.out.println("Wrote data to the file!");
    }

    public static int[] readData()
    {
        int[] fileData = new int[fileSize];
        try (FileInputStream fileRead = new FileInputStream("Exercise17_03.dat")) {
            // Read the data back
            int dataIterator = 0;
            int dataStream = 0;
            while (fileRead.available() > 0) {
                dataStream = fileRead.read();
                fileData[dataIterator++] = dataStream;
                System.out.print(dataStream + " ");
                if ((dataIterator + 1) % 10 == 0) {
                    System.out.println();
                }
            }
        } catch (IOException ex) {
            System.out.println(ex);
        }
        return fileData;
    }
    
    public static void main(String[] args)
    {
        System.out.println("Ints to write: " + fileSize);
        writeData();
        int[] fileData = readData();
        // Sum the digits
        int sum = 0;
        for (int i: fileData) {
         sum += i;   
        }
        System.out.println("\nThe sum of the integers in the file is: " + sum);
    }
}