For most practical purposes, filenames within a single directory must be unique to ensure proper organization, identification, and operation of files in a computer system.
Exceptions:
Case Sensitivity: Some file systems (like Linux) are case-sensitive. So, "File.txt" and "file.txt" would be considered different files. However, within a single case-sensitive directory, you still couldn't have two filenames that are identical except for case.
Alternate Data Streams (ADS): Windows NTFS file system supports Alternate Data Streams (ADS), which allow attaching additional data to a file with a different identifier. So, you could technically have a file named "report.docx" and another with the same name but an ADS attached, although this is not a common use case.
node = metadata + pointers -> data blocks
directory[....nodes]
foo[name1,name2,name3.....]
Creation of a new file in foo: While naming a new file we have to SCAN to check wheaather name of file is not conflicting with already present files
Renaming of an existing file in foo: SAME AS ABOVE
Deletion of an existing file from foo: No need to SCAN
Opening of an existing file in foo: No need to SCAN
Option A&C