@@ -58,9 +58,15 @@ public void ScanAll()
5858 if ( ! OptionDirRegex ( ) . IsMatch ( dirName ) ) continue ;
5959
6060 var musicDir = Path . Combine ( optDir , "music" ) ;
61- if ( ! Directory . Exists ( musicDir ) ) continue ;
62-
63- var count = ScanMusicDirectory ( musicDir , dirName ) ;
61+ if ( Directory . Exists ( musicDir ) ) // 当 music 目录 存在 时
62+ {
63+ ScanMusicDirectory ( musicDir , dirName ) ; // 扫描曲目
64+ }
65+ else // 当 music 目录 不存在 时
66+ {
67+ // 即使没有 music,也注册为空的源
68+ MusicBySource [ dirName ] = new List < MusicXml > ( ) ;
69+ }
6470 AvailableSources . Add ( dirName ) ;
6571 }
6672
@@ -72,22 +78,31 @@ private int ScanMusicDirectory(string musicDir, string assetDir)
7278 {
7379 var list = new List < MusicXml > ( ) ;
7480
75- foreach ( var subDir in Directory . EnumerateDirectories ( musicDir ) )
81+ try
7682 {
77- var xmlPath = Path . Combine ( subDir , "Music.xml" ) ;
78- if ( ! File . Exists ( xmlPath ) ) continue ;
79-
80- try
81- {
82- var music = MusicXml . Load ( xmlPath , assetDir , "" ) ;
83- list . Add ( music ) ;
84- }
85- catch ( Exception ex )
83+ foreach ( var subDir in Directory . EnumerateDirectories ( musicDir ) )
8684 {
87- Log . Error ( $ "加载 { xmlPath } 失败", ex ) ;
88- Errors . Add ( $ "加载 { xmlPath } 失败: { ex . Message } ") ;
85+ var xmlPath = Path . Combine ( subDir , "Music.xml" ) ;
86+ if ( ! File . Exists ( xmlPath ) ) continue ;
87+
88+ try
89+ {
90+ var music = MusicXml . Load ( xmlPath , assetDir , "" ) ;
91+ list . Add ( music ) ;
92+ }
93+ catch ( Exception ex )
94+ {
95+ Log . Error ( $ "加载 { xmlPath } 失败", ex ) ;
96+ Errors . Add ( $ "加载 { xmlPath } 失败: { ex . Message } ") ;
97+ }
8998 }
9099 }
100+ catch ( DirectoryNotFoundException ex )
101+ {
102+ Log . Warn ( $ "扫描时目录已被删除: { musicDir } ,{ ex . Message } ") ;
103+ Errors . Add ( $ "目录访问失败: { musicDir } ") ;
104+ return 0 ;
105+ }
91106
92107 if ( list . Count > 0 )
93108 MusicBySource [ assetDir ] = list ;
0 commit comments