private void sendFile(String filename) {
		try {
			// Check that the file exists and report existence to client
			File file = new File(Server.SERVERDIRECTORIES[0].concat("/" + filename));
			if(!file.exists()) {
				sendAck(COMMAND.F, false);
				throw new FileNotFoundException();
			} else {
				sendAck(COMMAND.F, true);
			}
				
			// Convert file to byte array
			FileInputStream fileInputStream = new FileInputStream(file);		// - for reading contents from file
			ByteArrayOutputStream baos = new ByteArrayOutputStream();			// - an intermediate for writing bytes to the byte[] 
			byte[] buffer = new byte[8192];										// - an array for the stream to read into
			int bitsRead = -1;													// - record how many bytes are read
			int totalRead = 0;													// - record the total number of bits read
			
			// Read data until the end of the file
			while((bitsRead = fileInputStream.read(buffer)) != -1) {
				baos.write(buffer, 0, bitsRead);
				System.out.println("Read: " + bitsRead + " bits read...");
				totalRead += bitsRead;
				bitsRead = -1;
			}
			
			// the final collection of data read from the file.
			// PROGRAM FLAW: final byte[] too big?
			byte[] byteArray = baos.toByteArray();
			byte[][] data = new byte[1][byteArray.length];
			data[0] = byteArray;
			
			// create message from byte[]
			Message msg = new Message(true, COMMAND.F, totalRead, filename, data);
			
			// send message through socket
			objectToClient.writeObject(msg);
			objectToClient.flush();
			
			// close streams and print success
			fileInputStream.close();
			baos.close();
			System.out.println("Server: File '" + filename + "' uploaded to client!");
			
		} catch (FileNotFoundException FNFe) {
			System.out.println("Server: Client requested a file that was not found");
		} catch (IOException IOe) {
			IOe.printStackTrace();
		}
	}