@@ -35,9 +35,11 @@ public class SearchFilesJob
3535 /// </summary>
3636 public Action EventSearchFinished ;
3737
38+ private SearchConfigs _searchConfig ;
3839 public async void Start ( SearchConfigs config )
3940 {
4041 _isStop = false ;
42+ _searchConfig = config ;
4143 await Task . Run ( ( ) =>
4244 {
4345 _checkDuplicateQueue = new CheckDuplicateQueue
@@ -47,12 +49,12 @@ await Task.Run(() =>
4749 EventSearchFinished = EventSearchFinished
4850 } ;
4951
50- _checkDuplicateQueue . Start ( config . SearchMatch ) ;
51- foreach ( string folderPath in config . Folders )
52+ _checkDuplicateQueue . Start ( _searchConfig . SearchMatch ) ;
53+ foreach ( string folderPath in _searchConfig . Folders )
5254 {
5355 EachDirectory ( folderPath , paths =>
5456 {
55- CalcFilesInfo ( paths , config . SearchOption ) ;
57+ CalcFilesInfo ( paths ) ;
5658 } ) ;
5759 }
5860
@@ -87,49 +89,53 @@ private void EachDirectory(string folderPath, Action<List<string>> callbackFileP
8789 }
8890 }
8991
90- private void CalcFilesInfo ( List < string > paths , SearchOptionEnum searchOption )
92+ private void CalcFilesInfo ( List < string > paths )
9193 {
9294 EventMessage ? . Invoke ( $ "读取文件:{ string . Join ( "," , paths ) } ") ;
9395 //根据路径加载文件信息
9496 var files = paths . Select ( path => new FileInfo ( path ) ) . ToList ( ) ;
9597
9698 //条件过滤器
97- if ( ( searchOption & SearchOptionEnum . IgnoreEmptyFile ) == SearchOptionEnum . IgnoreEmptyFile )
99+ if ( ( _searchConfig . SearchOption & SearchOptionEnum . IgnoreEmptyFile ) == SearchOptionEnum . IgnoreEmptyFile )
98100 {
99101 IFileSearchFilter filter = new IgnoreEmptyFileFilter ( ) ;
100102 files = filter . FilterByCondition ( files ) ;
101103 }
102- if ( ( searchOption & SearchOptionEnum . IgnoreHiddenFile ) == SearchOptionEnum . IgnoreHiddenFile )
104+ if ( ( _searchConfig . SearchOption & SearchOptionEnum . IgnoreHiddenFile ) == SearchOptionEnum . IgnoreHiddenFile )
103105 {
104106 IFileSearchFilter filter = new IgnoreHiddenFileFilter ( ) ;
105107 files = filter . FilterByCondition ( files ) ;
106108 }
107- if ( ( searchOption & SearchOptionEnum . IgnoreSmallFile ) == SearchOptionEnum . IgnoreSmallFile )
109+ if ( ( _searchConfig . SearchOption & SearchOptionEnum . IgnoreSmallFile ) == SearchOptionEnum . IgnoreSmallFile )
108110 {
109111 IFileSearchFilter filter = new IgnoreSmallFileFilter ( 1024 ) ;
110112 files = filter . FilterByCondition ( files ) ;
111113 }
112- if ( ( searchOption & SearchOptionEnum . IgnoreSystemFile ) == SearchOptionEnum . IgnoreSystemFile )
114+ if ( ( _searchConfig . SearchOption & SearchOptionEnum . IgnoreSystemFile ) == SearchOptionEnum . IgnoreSystemFile )
113115 {
114116 IFileSearchFilter filter = new IgnoreExtensionFilter ( GlobalArgs . AppConfig . SystemExtension . Split ( ';' ) . ToList ( ) ) ;
115117 files = filter . FilterByCondition ( files ) ;
116118 }
117- if ( ( searchOption & SearchOptionEnum . OnlyDocumentFile ) == SearchOptionEnum . OnlyDocumentFile )
119+ if ( ( _searchConfig . SearchOption & SearchOptionEnum . OnlyDocumentFile ) == SearchOptionEnum . OnlyDocumentFile )
118120 {
119121 IFileSearchFilter filter = new OnlyExtensionFilter ( GlobalArgs . AppConfig . DocumentExtension . Split ( ';' ) . ToList ( ) ) ;
120122 files = filter . FilterByCondition ( files ) ;
121123 }
122- if ( ( searchOption & SearchOptionEnum . OnlyImageFile ) == SearchOptionEnum . OnlyImageFile )
124+ if ( ( _searchConfig . SearchOption & SearchOptionEnum . OnlyImageFile ) == SearchOptionEnum . OnlyImageFile )
123125 {
124126 IFileSearchFilter filter = new OnlyExtensionFilter ( GlobalArgs . AppConfig . ImageExtension . Split ( ';' ) . ToList ( ) ) ;
125127 files = filter . FilterByCondition ( files ) ;
126128 }
127- if ( ( searchOption & SearchOptionEnum . OnlyMediaFile ) == SearchOptionEnum . OnlyMediaFile )
129+ if ( ( _searchConfig . SearchOption & SearchOptionEnum . OnlyMediaFile ) == SearchOptionEnum . OnlyMediaFile )
128130 {
129131 IFileSearchFilter filter = new OnlyExtensionFilter ( GlobalArgs . AppConfig . MediaExtension . Split ( ';' ) . ToList ( ) ) ;
130132 files = filter . FilterByCondition ( files ) ;
131133 }
132-
134+ if ( ( _searchConfig . SearchOption & SearchOptionEnum . OnlyFileName ) == SearchOptionEnum . OnlyFileName )
135+ {
136+ IFileSearchFilter filter = new OnlyFileNameFilter ( _searchConfig . SearchOptionData . OnlyFileNames ) ;
137+ files = filter . FilterByCondition ( files ) ;
138+ }
133139 files . ForEach ( file =>
134140 {
135141 //符合条件的文件写入队列
0 commit comments