@@ -286,7 +286,29 @@ class FileFeatureStorage(FileStorageMixin, FeatureStorage):
286286 def __init__ (self , instrument : str , field : str , freq : str , provider_uri : dict = None , ** kwargs ):
287287 super (FileFeatureStorage , self ).__init__ (instrument , field , freq , ** kwargs )
288288 self ._provider_uri = None if provider_uri is None else C .DataPathManager .format_provider_uri (provider_uri )
289- self .file_name = f"{ instrument .lower ()} /{ field .lower ()} .{ freq .lower ()} .bin"
289+
290+ base_uri = self .dpm .get_data_uri (self .freq ) # Assuming dpm is available and get_data_uri provides the base path
291+
292+ # Candidate 1: Original Case (Preferred for correct behavior on Linux)
293+ name_orig = f"{ instrument } /{ field .lower ()} .{ freq .lower ()} .bin"
294+ if (base_uri / name_orig ).exists ():
295+ self .file_name = name_orig
296+ return
297+
298+ # Candidate 2: Uppercase (Fix for lowercase input finding uppercase folder on case-sensitive OS)
299+ name_upper = f"{ instrument .upper ()} /{ field .lower ()} .{ freq .lower ()} .bin"
300+ if (base_uri / name_upper ).exists ():
301+ self .file_name = name_upper
302+ return
303+
304+ # Candidate 3: Lowercase (Backward Compatibility)
305+ name_lower = f"{ instrument .lower ()} /{ field .lower ()} .{ freq .lower ()} .bin"
306+ if (base_uri / name_lower ).exists ():
307+ self .file_name = name_lower
308+ return
309+
310+ # Default: Original Case (For new files)
311+ self .file_name = name_orig
290312
291313 def clear (self ):
292314 with self .uri .open ("wb" ) as _ :
0 commit comments