public void fetchFile(String fileName) throws IOException {
		if(Arrays.asList(rootFolder.list()).contains(fileName)) {
			throw new FileAlreadyExistsException(fileName);
		}
		
		DatagramSocket clientSocket = new DatagramSocket();
		
		Sender sender = new Sender(clientSocket, GlobalConfig.TFTP_CONTROL_PORT, serverAddress);
		sender.sendObject(new RRQ(fileName));
			
		Logger.log("TFTP client waiting for the requested file: " + fileName);
		
		byte[] result = null;
		try {
			Logger.log("Receiving file. Listening for data on port: " + clientSocket.getLocalPort());
			result = FileReceiver.receiveFile(clientSocket, clientAddress);
			clientSocket.close();
		} catch(IOException e) {
			throw new FileNotFoundException("Failed to receive file from server: " + e.getMessage());
		}
		
		Logger.log("Received the file successfully: " + fileName);
		String fileContents = new String(result);
		
		Logger.log("Downloaded file contents: ");
		Logger.log(fileContents);
		
		// Not writing at the moment for testing purposes
		/*
		File newFile = new File(rootFolder, fileName);
		
		try(PrintWriter pw = new PrintWriter(newFile)) {
			pw.write(fileContents);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}*/
		
		Logger.log("Finished task READ file " + fileName);
	}