{"record":{"id":"5a9c28b34061e178","repo":"EllanJiang/GameFramework","slug":"file-system-name-is-invalid","errorCode":null,"errorMessage":"File system name is invalid.","messagePattern":"File system name is invalid\\.","errorType":"exception","errorClass":"GameFrameworkException","httpStatus":null,"severity":"error","filePath":"GameFramework/Resource/ResourceManager.cs","lineNumber":2296,"sourceCode":"            if (m_ResourceInfos == null)\n            {\n                return null;\n            }\n\n            ResourceInfo resourceInfo = null;\n            if (m_ResourceInfos.TryGetValue(resourceName, out resourceInfo))\n            {\n                return resourceInfo;\n            }\n\n            return null;\n        }\n\n        private IFileSystem GetFileSystem(string fileSystemName, bool storageInReadOnly)\n        {\n            if (string.IsNullOrEmpty(fileSystemName))\n            {\n                throw new GameFrameworkException(\"File system name is invalid.\");\n            }\n\n            IFileSystem fileSystem = null;\n            if (storageInReadOnly)\n            {\n                if (!m_ReadOnlyFileSystems.TryGetValue(fileSystemName, out fileSystem))\n                {\n                    string fullPath = Utility.Path.GetRegularPath(Path.Combine(m_ReadOnlyPath, Utility.Text.Format(\"{0}.{1}\", fileSystemName, DefaultExtension)));\n                    fileSystem = m_FileSystemManager.GetFileSystem(fullPath);\n                    if (fileSystem == null)\n                    {\n                        fileSystem = m_FileSystemManager.LoadFileSystem(fullPath, FileSystemAccess.Read);\n                        m_ReadOnlyFileSystems.Add(fileSystemName, fileSystem);\n                    }\n                }\n            }\n            else\n            {","sourceCodeStart":2278,"sourceCodeEnd":2314,"githubUrl":"https://github.com/EllanJiang/GameFramework/blob/d0c010b05167c58e92350449d04864a91ca13fd2/GameFramework/Resource/ResourceManager.cs#L2278-L2314","documentation":"ResourceManager.GetFileSystem validates fileSystemName before resolving it against the read-only or read-write file-system dictionaries. A null or empty name cannot map to any file system, so a GameFrameworkException is thrown. This prevents ambiguous lookups into resource storage.","triggerScenarios":"Calling ResourceManager APIs that fetch an IFileSystem (e.g. when loading resources stored in a named file system) with a null or empty fileSystemName, for either the read-only or read-write storage case.","commonSituations":"File system name read from an empty config field, a version-list entry lacking a file-system name, or forgetting to set the name when creating/looking up custom file systems.","solutions":["Ensure fileSystemName is non-null and non-empty before invoking the API","Check the resource version/config data that supplies the file-system name","Confirm the file system was created/registered with the exact same name"],"exampleFix":"// before\nvar fs = GetFileSystem(fileSystemName, true);\n// after\nif (string.IsNullOrEmpty(fileSystemName)) { Log.Error(\"File system name required\"); return null; }\nvar fs = GetFileSystem(fileSystemName, true);","handlingStrategy":"validation","validationCode":"if (string.IsNullOrEmpty(fileSystemName)) { Log.Error(\"File system name is empty\"); return; }","typeGuard":"bool IsValidFileSystemName(string n) => !string.IsNullOrEmpty(n);","tryCatchPattern":"try { /* API taking fileSystemName */ } catch (GameFrameworkException ex) when (ex.Message == \"File system name is invalid.\") { Log.Error(ex, \"Bad file system name\"); }","preventionTips":["Keep file-system names in constants or an enum-backed lookup, never raw strings from unvalidated config","Validate version-list fields containing file-system names before use","Ensure file systems are registered under exactly the same name used for lookup"],"tags":["resource","filesystem","argument-validation"],"backgroundTag":"empty-required-field","analyzedSha":"d0c010b05167c58e92350449d04864a91ca13fd2","analyzedAt":"2026-09-15T13:37:15.352Z","contentChangedAt":"2026-09-15T13:37:15.352Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}