Answers on your questions:
1) Following code creates link from Oracle internally defined directory (can see them by selecting data from DBA_DIRECTORIES) to file system directory.
CREATE OR REPLACE DIRECTORY NEWFILE_DIRECTORY AS '/xxx/xxx/xxx'
If path '/xxx/xxx/xxx' already exists in file system, then this will be correct way.
2) If I understand you correctly, then you must check that in NEWFILE_DIRECTORY exists file with current date in it's name. It can be done with following function:
FUNCTION check_if_file_exists
(p_file_name IN VARCHAR2
,p_file_dir IN VARCHAR2)
RETURN BOOLEAN
IS
v_file utl_file.file_type;
BEGIN
v_file := utl_file.fopen(p_file_dir, p_file_name, 'R');
IF utl_file.is_open(v_file) THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
EXCEPTION
WHEN UTL_FILE.invalid_path THEN
RETURN FALSE;
WHEN utl_file.invalid_operation THEN
RETURN FALSE;
END check_if_file_exists;
And your first if will be:
IF check_if_file_exists(v_fileName, 'NEWFILE_DIRECTORY') THEN
3) You can create DB directories (mapping for DB to find file system path) by "CREATE OR REPLACE DIRECTORY" (see #1)
4) You pass parameter as string value 'v_fileName' not variable v_fileName. Correct code would be:
v_inFile := utl_file.fopen ('NEWFILE_DIRECTORY', v_fileName, 'r');