• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2021-2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import { MimeType } from '../../databases/model/MimeType';
17import StringUtil from '../../base/utils/StringUtil';
18
19/**
20 * 文件媒体类型
21 */
22export class FileMimeTypeUtil {
23  /**
24   * Image file types
25   */
26  public static FILE_TYPE_PNG: number = 1;
27  public static FILE_TYPE_JPG: number = 2;
28  public static FILE_TYPE_JPEG: number = 3;
29  public static FILE_TYPE_GIF: number = 4;
30  public static FILE_TYPE_BMP: number = 5;
31  public static FILE_TYPE_ICO: number = 6;
32  public static FILE_TYPE_RAW: number = 7;
33  public static FILE_TYPE_TIF: number = 8;
34  public static FILE_TYPE_WEBP: number = 9;
35  public static FILE_TYPE_HEIC: number = 10;
36  public static FILE_TYPE_WBMP: number = 12;
37  public static FILE_TYPE_CR2: number = 13;
38  public static FILE_TYPE_PSD: number = 14;
39  private static FIRST_IMAGE_FILE_TYPE: number = FileMimeTypeUtil.FILE_TYPE_PNG;
40  private static LAST_IMAGE_FILE_TYPE: number = FileMimeTypeUtil.FILE_TYPE_PSD;
41  /**
42   * Video file types
43   */
44  public static FILE_TYPE_MP4: number = 21;
45  public static FILE_TYPE_AVI: number = 22;
46  public static FILE_TYPE_MP2TS: number = 23;
47  public static FILE_TYPE_MOV: number = 24;
48  public static FILE_TYPE_RM: number = 25;
49  public static FILE_TYPE_RMVB: number = 26;
50  public static FILE_TYPE_FLV: number = 27;
51  public static FILE_TYPE_MKV: number = 28;
52  public static FILE_TYPE_M4U: number = 29;
53  public static FILE_TYPE_WMV: number = 30;
54  public static FILE_TYPE_ASF: number = 31;
55  public static FILE_TYPE_RV: number = 32;
56  public static FILE_TYPE_DIVX: number = 33;
57  public static FILE_TYPE_3GPP: number = 34;
58  public static FILE_TYPE_M4V: number = 35;
59  public static FILE_TYPE_F4V: number = 36;
60  public static FILE_TYPE_WEBM: number = 37;
61  public static FILE_TYPE_3GPP2: number = 38;
62  public static FILE_TYPE_MP2PS: number = 39;
63  private static FIRST_VIDEO_FILE_TYPE: number = FileMimeTypeUtil.FILE_TYPE_MP4;
64  private static LAST_VIDEO_FILE_TYPE: number = FileMimeTypeUtil.FILE_TYPE_MP2PS;
65  /**
66   * document file types
67   */
68  public static FILE_TYPE_MS_WORD: number = 50;
69  public static FILE_TYPE_MS_POWERPOINT: number = 52;
70  public static FILE_TYPE_MS_EXCEL: number = 53;
71  public static FILE_TYPE_PDF: number = 54;
72  public static FILE_TYPE_HTML: number = 55;
73  public static FILE_TYPE_XML: number = 56;
74  public static FILE_TYPE_TEXT: number = 57;
75  public static FILE_TYPE_MORE_TEXT: number = 58;
76  private static FIRST_DOC_FILE_TYPE: number = FileMimeTypeUtil.FILE_TYPE_MS_WORD;
77  private static LAST_DOC_FILE_TYPE: number = FileMimeTypeUtil.FILE_TYPE_MORE_TEXT;
78  /**
79   * Audio file types
80   */
81  public static FILE_TYPE_MP3: number = 70;
82  public static FILE_TYPE_WAV: number = 71;
83  public static FILE_TYPE_AAC: number = 72;
84  public static FILE_TYPE_RAM: number = 73;
85  public static FILE_TYPE_APE: number = 74;
86  public static FILE_TYPE_WMA: number = 75;
87  public static FILE_TYPE_AU: number = 76;
88  public static FILE_TYPE_FLAC: number = 77;
89  public static FILE_TYPE_MP2: number = 78;
90  public static FILE_TYPE_RA: number = 79;
91  public static FILE_TYPE_AC3: number = 80;
92  public static FILE_TYPE_OGG: number = 81;
93  public static FILE_TYPE_AMR: number = 82;
94  public static FILE_TYPE_M4A: number = 83;
95  public static FILE_TYPE_MP4A: number = 84;
96  public static FILE_TYPE_AIFF: number = 85;
97  public static FILE_TYPE_MMF: number = 86;
98  public static FILE_TYPE_AWB: number = 87;
99  public static FILE_TYPE_MKA: number = 88;
100  public static FILE_TYPE_QCP: number = 89;
101  public static FILE_TYPE_MPGA: number = 90;
102  public static FILE_TYPE_MXMF: number = 91;
103  public static FILE_TYPE_MID: number = 92;
104  public static FILE_TYPE_SMF: number = 93;
105  public static FILE_TYPE_IMY: number = 94;
106  public static FILE_TYPE_M3U: number = 95;
107  public static FILE_TYPE_PLS: number = 96;
108  public static FILE_TYPE_WPL: number = 97;
109  public static FILE_TYPE_RM_AUDIO: number = 98;
110  public static FILE_TYPE_MP4_AUDIO: number = 99;
111  public static FILE_TYPE_3GPP_AUDIO: number = 100;
112  private static FIRST_AUDIO_FILE_TYPE: number = FileMimeTypeUtil.FILE_TYPE_MP3;
113  private static LAST_AUDIO_FILE_TYPE: number = FileMimeTypeUtil.FILE_TYPE_3GPP_AUDIO;
114  /**
115   * compressed file types
116   */
117  public static FILE_TYPE_ZIP: number = 110;
118  public static FILE_TYPE_RAR: number = 111;
119  public static FILE_TYPE_JAR: number = 112;
120  public static FILE_TYPE_GZ: number = 113;
121  public static FILE_TYPE_TAR: number = 114;
122  public static FILE_TYPE_Z: number = 115;
123  public static FILE_TYPE_7Z: number = 116;
124  public static FILE_TYPE_BZ: number = 117;
125  public static FILE_TYPE_BZ2: number = 118;
126  public static FILE_TYPE_TGZ: number = 119;
127  private static FIRST_COMPRESS_FILE_TYPE: number = FileMimeTypeUtil.FILE_TYPE_ZIP;
128  private static LAST_COMPRESS_FILE_TYPE: number = FileMimeTypeUtil.FILE_TYPE_TGZ;
129  /**
130   * apk file types
131   */
132  public static FILE_TYPE_APK: number = 130;
133  public static FILE_TYPE_HAP: number = 131;
134  /**
135   * vcf file types
136   */
137  public static FILE_TYPE_VCF: number = 135;
138  /**
139   * 未知类型
140   */
141  public static FILE_TYPE_UNKNOW: number = 200;
142  public static SUFFIX_DLP = 'DLP';
143  private static UNKNOW_MIMETYPE: MimeType = new MimeType(
144    null,
145    MimeType.FILE_CATEGORY_UNKNOW,
146    FileMimeTypeUtil.FILE_TYPE_UNKNOW,
147    $r('app.media.hidisk_icon_unknown'),
148    $r('app.media.hidisk_icon_unknown_grid'),
149    $r('app.media.hidisk_icon_unknown_grid_local'),
150    null
151  );
152  private static fileMimeTypeMap: Map<string, MimeType> = new Map<string, MimeType>();
153
154  private static addFileMimeType(extension: string, fileCategory: number, fileTypeSort: number, resID: Resource,
155                                 gridResID: Resource, localGridResID: Resource, mimeType: string): void {
156    const mType: MimeType = new MimeType(extension, fileCategory,
157      fileTypeSort, resID, gridResID, localGridResID, mimeType)
158    FileMimeTypeUtil.fileMimeTypeMap.set(extension, mType);
159  }
160
161  static setFileMimeTypeMap() {
162    // 图片
163    this.addFileMimeType('PNG', MimeType.FILE_CATEGORY_IMAGE, FileMimeTypeUtil.FILE_TYPE_PNG,
164      $r('app.media.hidisk_icon_picture'), $r('app.media.hidisk_icon_picture_grid'),
165      $r('app.media.hidisk_icon_picture_grid_local'), 'image/png');
166    this.addFileMimeType('WBMP', MimeType.FILE_CATEGORY_IMAGE, FileMimeTypeUtil.FILE_TYPE_WBMP,
167      $r('app.media.hidisk_icon_picture'), $r('app.media.hidisk_icon_picture_grid'),
168      $r('app.media.hidisk_icon_picture_grid_local'), 'image/vnd.wap.wbmp');
169    this.addFileMimeType('BMP', MimeType.FILE_CATEGORY_IMAGE, FileMimeTypeUtil.FILE_TYPE_BMP,
170      $r('app.media.hidisk_icon_picture'), $r('app.media.hidisk_icon_picture_grid'),
171      $r('app.media.hidisk_icon_picture_grid_local'), 'image/bmp');
172    this.addFileMimeType('GIF', MimeType.FILE_CATEGORY_IMAGE, FileMimeTypeUtil.FILE_TYPE_GIF,
173      $r('app.media.hidisk_icon_picture'), $r('app.media.hidisk_icon_picture_grid'),
174      $r('app.media.hidisk_icon_picture_grid_local'), 'image/gif');
175    this.addFileMimeType('JPEG', MimeType.FILE_CATEGORY_IMAGE, FileMimeTypeUtil.FILE_TYPE_JPEG,
176      $r('app.media.hidisk_icon_picture'), $r('app.media.hidisk_icon_picture_grid'),
177      $r('app.media.hidisk_icon_picture_grid_local'), 'image/jpeg');
178    this.addFileMimeType('JPG', MimeType.FILE_CATEGORY_IMAGE, FileMimeTypeUtil.FILE_TYPE_JPG,
179      $r('app.media.hidisk_icon_picture'), $r('app.media.hidisk_icon_picture_grid'),
180      $r('app.media.hidisk_icon_picture_grid_local'), 'image/jpeg');
181    this.addFileMimeType('JPE', MimeType.FILE_CATEGORY_IMAGE, FileMimeTypeUtil.FILE_TYPE_JPEG,
182      $r('app.media.hidisk_icon_picture'), $r('app.media.hidisk_icon_picture_grid'),
183      $r('app.media.hidisk_icon_picture_grid_local'), 'image/jpeg');
184    this.addFileMimeType('CR2', MimeType.FILE_CATEGORY_IMAGE, FileMimeTypeUtil.FILE_TYPE_CR2,
185      $r('app.media.hidisk_icon_picture'), $r('app.media.hidisk_icon_picture_grid'),
186      $r('app.media.hidisk_icon_picture_grid_local'), 'image/cr2');
187    this.addFileMimeType('PSD', MimeType.FILE_CATEGORY_IMAGE, FileMimeTypeUtil.FILE_TYPE_PSD,
188      $r('app.media.hidisk_icon_picture'), $r('app.media.hidisk_icon_picture_grid'),
189      $r('app.media.hidisk_icon_picture_grid_local'), 'image/psd');
190    this.addFileMimeType('HEIC', MimeType.FILE_CATEGORY_IMAGE, FileMimeTypeUtil.FILE_TYPE_HEIC,
191      $r('app.media.hidisk_icon_picture'), $r('app.media.hidisk_icon_picture_grid'),
192      $r('app.media.hidisk_icon_picture_grid_local'), 'image/heif');
193    this.addFileMimeType('HEIF', MimeType.FILE_CATEGORY_IMAGE, FileMimeTypeUtil.FILE_TYPE_HEIC,
194      $r('app.media.hidisk_icon_picture'), $r('app.media.hidisk_icon_picture_grid'),
195      $r('app.media.hidisk_icon_picture_grid_local'), 'image/heif');
196    this.addFileMimeType('DNG', MimeType.FILE_CATEGORY_IMAGE, FileMimeTypeUtil.FILE_TYPE_RAW,
197      $r('app.media.hidisk_icon_picture'), $r('app.media.hidisk_icon_picture_grid'),
198      $r('app.media.hidisk_icon_picture_grid_local'), 'image/x-adobe-dng');
199    this.addFileMimeType('WEBP', MimeType.FILE_CATEGORY_IMAGE, FileMimeTypeUtil.FILE_TYPE_WEBP,
200      $r('app.media.hidisk_icon_picture'), $r('app.media.hidisk_icon_picture_grid'),
201      $r('app.media.hidisk_icon_picture_grid_local'), 'image/webp');
202    this.addFileMimeType('TIF', MimeType.FILE_CATEGORY_IMAGE, FileMimeTypeUtil.FILE_TYPE_TIF,
203      $r('app.media.hidisk_icon_picture'), $r('app.media.hidisk_icon_picture_grid'),
204      $r('app.media.hidisk_icon_picture_grid_local'), 'image/tiff');
205    this.addFileMimeType('ICO', MimeType.FILE_CATEGORY_IMAGE, FileMimeTypeUtil.FILE_TYPE_ICO,
206      $r('app.media.hidisk_icon_picture'), $r('app.media.hidisk_icon_picture_grid'),
207      $r('app.media.hidisk_icon_picture_grid_local'), 'image/x-icon');
208    this.addFileMimeType('ARW', MimeType.FILE_CATEGORY_IMAGE, FileMimeTypeUtil.FILE_TYPE_RAW,
209      $r('app.media.hidisk_icon_picture'), $r('app.media.hidisk_icon_picture_grid'),
210      $r('app.media.hidisk_icon_picture_grid_local'), 'image/x-sony-arw');
211
212    // 视频
213    this.addFileMimeType('RMVB', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_RMVB,
214      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
215      $r('app.media.hidisk_icon_video_grid_local'), 'video/x-pn-realvideo');
216    this.addFileMimeType('M4U', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_M4U,
217      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
218      $r('app.media.hidisk_icon_video_grid_local'), 'video/vnd.mpegurl');
219    this.addFileMimeType('M4V', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_M4V,
220      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
221      $r('app.media.hidisk_icon_video_grid_local'), 'video/x-m4v');
222    this.addFileMimeType('MOV', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_MOV,
223      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
224      $r('app.media.hidisk_icon_video_grid_local'), 'video/quicktime');
225    this.addFileMimeType('MP4', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_MP4,
226      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
227      $r('app.media.hidisk_icon_video_grid_local'), 'video/mp4');
228    this.addFileMimeType('MPE', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_MP4,
229      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
230      $r('app.media.hidisk_icon_video_grid_local'), 'video/mpeg');
231    this.addFileMimeType('MPEG', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_MP2PS,
232      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
233      $r('app.media.hidisk_icon_video_grid_local'), 'video/mpeg');
234    this.addFileMimeType('MPG4', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_MP4,
235      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
236      $r('app.media.hidisk_icon_video_grid_local'), 'video/mpeg');
237    this.addFileMimeType('MKV', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_MKV,
238      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
239      $r('app.media.hidisk_icon_video_grid_local'), 'video/x-matroska');
240    this.addFileMimeType('WEBM', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_WEBM,
241      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
242      $r('app.media.hidisk_icon_video_grid_local'), 'video/x-matroska');
243    this.addFileMimeType('3GPP', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_3GPP,
244      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
245      $r('app.media.hidisk_icon_video_grid_local'), 'video/3gpp');
246    this.addFileMimeType('ASF', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_ASF,
247      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
248      $r('app.media.hidisk_icon_video_grid_local'), 'video/x-ms-asf');
249    this.addFileMimeType('ASX', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_ASF,
250      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
251      $r('app.media.hidisk_icon_video_grid_local'), 'video/x-ms-asf');
252    this.addFileMimeType('AVI', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_AVI,
253      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
254      $r('app.media.hidisk_icon_video_grid_local'), 'video/x-msvideo');
255    this.addFileMimeType('FLV', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_FLV,
256      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
257      $r('app.media.hidisk_icon_video_grid_local'), 'video/x-flv');
258    this.addFileMimeType('M2TS', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_MP2PS,
259      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
260      $r('app.media.hidisk_icon_video_grid_local'), 'video/mpeg');
261    this.addFileMimeType('3G2', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_3GPP2,
262      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
263      $r('app.media.hidisk_icon_video_grid_local'), 'video/3gpp2');
264    this.addFileMimeType('WMV', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_WMV,
265      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
266      $r('app.media.hidisk_icon_video_grid_local'), 'video/x-ms-wmv');
267    this.addFileMimeType('MPG', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_MP4,
268      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
269      $r('app.media.hidisk_icon_video_grid_local'), 'video/video/mp2p');
270    this.addFileMimeType('3GP', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_3GPP,
271      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
272      $r('app.media.hidisk_icon_video_grid_local'), 'video/video/3gpp');
273    this.addFileMimeType('RV', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_RV,
274      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
275      $r('app.media.hidisk_icon_video_grid_local'), 'video/x-pn-realvideo');
276    this.addFileMimeType('TS', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_MP2TS,
277      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
278      $r('app.media.hidisk_icon_video_grid_local'), 'video/mp2ts');
279    this.addFileMimeType('DIVX', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_DIVX,
280      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
281      $r('app.media.hidisk_icon_video_grid_local'), 'video/divx');
282    this.addFileMimeType('F4V', MimeType.FILE_CATEGORY_VIDEO, FileMimeTypeUtil.FILE_TYPE_F4V,
283      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
284      $r('app.media.hidisk_icon_video_grid_local'), 'video/x-f4v');
285
286    // 文档
287    this.addFileMimeType('DOCX', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_WORD,
288      $r('app.media.hidisk_icon_doc'), $r('app.media.hidisk_icon_doc_grid'),
289      $r('app.media.hidisk_icon_doc_grid_local'),
290      'application/vnd.openxmlformats-officedocument.wordprocessingml.document');
291    this.addFileMimeType('DOC', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_WORD,
292      $r('app.media.hidisk_icon_doc'), $r('app.media.hidisk_icon_doc_grid'),
293      $r('app.media.hidisk_icon_doc_grid_local'), 'application/msword');
294    this.addFileMimeType('DOCM', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_WORD,
295      $r('app.media.hidisk_icon_doc'), $r('app.media.hidisk_icon_doc_grid'),
296      $r('app.media.hidisk_icon_doc_grid_local'),
297      'application/vnd.openxmlformats-officedocument.wordprocessingml.document');
298    this.addFileMimeType('DOTM', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_WORD,
299      $r('app.media.hidisk_icon_doc'), $r('app.media.hidisk_icon_doc_grid'),
300      $r('app.media.hidisk_icon_doc_grid_local'),
301      'application/vnd.openxmlformats-officedocument.wordprocessingml.document');
302    this.addFileMimeType('WPT', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_WORD,
303      $r('app.media.hidisk_icon_doc'), $r('app.media.hidisk_icon_doc_grid'),
304      $r('app.media.hidisk_icon_doc_grid_local'), 'application/wpt');
305    this.addFileMimeType('XLS', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_EXCEL,
306      $r('app.media.hidisk_icon_xls'), $r('app.media.hidisk_icon_xls_grid'),
307      $r('app.media.hidisk_icon_xls_grid_local'), 'application/vnd.ms-excel');
308    this.addFileMimeType('XLSX', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_EXCEL,
309      $r('app.media.hidisk_icon_xls'), $r('app.media.hidisk_icon_xls_grid'),
310      $r('app.media.hidisk_icon_xls_grid_local'), 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
311    this.addFileMimeType('XLSM', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_EXCEL,
312      $r('app.media.hidisk_icon_xls'), $r('app.media.hidisk_icon_xls_grid'),
313      $r('app.media.hidisk_icon_xls_grid_local'), 'application/vnd.ms-excel.sheet.macroEnabled.12');
314    this.addFileMimeType('XLTM', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_EXCEL,
315      $r('app.media.hidisk_icon_xls'), $r('app.media.hidisk_icon_xls_grid'),
316      $r('app.media.hidisk_icon_xls_grid_local'), 'application/vnd.ms-excel.template.macroEnabled.12');
317    this.addFileMimeType('ET', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_EXCEL,
318      $r('app.media.hidisk_icon_xls'), $r('app.media.hidisk_icon_xls_grid'),
319      $r('app.media.hidisk_icon_xls_grid_local'), 'application/et');
320    this.addFileMimeType('PPS', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_POWERPOINT,
321      $r('app.media.hidisk_icon_ppt'), $r('app.media.hidisk_icon_ppt_grid'),
322      $r('app.media.hidisk_icon_ppt_grid_local'), 'application/vnd.ms-powerpoint');
323    this.addFileMimeType('PPT', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_POWERPOINT,
324      $r('app.media.hidisk_icon_ppt'), $r('app.media.hidisk_icon_ppt_grid'),
325      $r('app.media.hidisk_icon_ppt_grid_local'), 'application/vnd.ms-powerpoint');
326    this.addFileMimeType('PPTX', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_POWERPOINT,
327      $r('app.media.hidisk_icon_ppt'), $r('app.media.hidisk_icon_ppt_grid'),
328      $r('app.media.hidisk_icon_ppt_grid_local'),
329      'application/vnd.openxmlformats-officedocument.presentationml.presentation');
330    this.addFileMimeType('PPTM', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_POWERPOINT,
331      $r('app.media.hidisk_icon_ppt'), $r('app.media.hidisk_icon_ppt_grid'),
332      $r('app.media.hidisk_icon_ppt_grid_local'), 'application/vnd.ms-powerpoint.presentation.macroEnabled.12');
333    this.addFileMimeType('PPSM', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_POWERPOINT,
334      $r('app.media.hidisk_icon_ppt'), $r('app.media.hidisk_icon_ppt_grid'),
335      $r('app.media.hidisk_icon_ppt_grid_local'), 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12');
336    this.addFileMimeType('POTM', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_POWERPOINT,
337      $r('app.media.hidisk_icon_ppt'), $r('app.media.hidisk_icon_ppt_grid'),
338      $r('app.media.hidisk_icon_ppt_grid_local'), 'application/vnd.ms-powerpoint.presentation.macroEnabled.12');
339    this.addFileMimeType('DPS', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_POWERPOINT,
340      $r('app.media.hidisk_icon_ppt'), $r('app.media.hidisk_icon_ppt_grid'),
341      $r('app.media.hidisk_icon_ppt_grid_local'), 'application/dps');
342    this.addFileMimeType('DPT', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_POWERPOINT,
343      $r('app.media.hidisk_icon_ppt'), $r('app.media.hidisk_icon_ppt_grid'),
344      $r('app.media.hidisk_icon_ppt_grid_local'), 'application/dpt');
345    this.addFileMimeType('MSG', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
346      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
347      $r('app.media.hidisk_icon_file_grid_local'), 'application/vnd.ms-outlook');
348    this.addFileMimeType('PDF', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_PDF,
349      $r('app.media.hidisk_icon_pdf'), $r('app.media.hidisk_icon_pdf_grid'),
350      $r('app.media.hidisk_icon_pdf_grid_local'), 'application/pdf');
351    this.addFileMimeType('RTF', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_WORD,
352      $r('app.media.hidisk_icon_doc'), $r('app.media.hidisk_icon_doc_grid'),
353      $r('app.media.hidisk_icon_doc_grid_local'), 'application/rtf');
354    this.addFileMimeType('WPS', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_WORD,
355      $r('app.media.hidisk_icon_doc'), $r('app.media.hidisk_icon_doc_grid'),
356      $r('app.media.hidisk_icon_doc_grid_local'), 'application/vnd.ms-works');
357    this.addFileMimeType('XHTML', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
358      $r('app.media.hidisk_icon_xml'), $r('app.media.hidisk_icon_xml_grid'),
359      $r('app.media.hidisk_icon_xml_grid_local'), 'application/xhtml+xml');
360    this.addFileMimeType('MPC', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
361      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
362      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/vnd.mpohun.certificate');
363    this.addFileMimeType('JS', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
364      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
365      $r('app.media.hidisk_icon_file_grid_local'), 'application/x-javascript');
366    this.addFileMimeType('C', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
367      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
368      $r('app.media.hidisk_icon_file_grid_local'), 'text/plain');
369    this.addFileMimeType('CONF', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
370      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
371      $r('app.media.hidisk_icon_file_grid_local'), 'text/plain');
372    this.addFileMimeType('CPP', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
373      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
374      $r('app.media.hidisk_icon_file_grid_local'), 'text/plain');
375    this.addFileMimeType('H', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
376      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
377      $r('app.media.hidisk_icon_file_grid_local'), 'text/plain');
378    this.addFileMimeType('HTM', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_HTML,
379      $r('app.media.hidisk_icon_html'), $r('app.media.hidisk_icon_html_grid'),
380      $r('app.media.hidisk_icon_html_grid_local'), 'text/html');
381    this.addFileMimeType('HTML', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_HTML,
382      $r('app.media.hidisk_icon_html'), $r('app.media.hidisk_icon_html_grid'),
383      $r('app.media.hidisk_icon_html_grid_local'), 'text/html');
384    this.addFileMimeType('JAVA', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
385      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
386      $r('app.media.hidisk_icon_file_grid_local'), 'text/plain');
387    this.addFileMimeType('LOG', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
388      $r('app.media.hidisk_icon_log'), $r('app.media.hidisk_icon_log_grid'),
389      $r('app.media.hidisk_icon_log_grid_local'), 'text/plain');
390    this.addFileMimeType('PROP', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
391      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
392      $r('app.media.hidisk_icon_file_grid_local'), 'text/plain');
393    this.addFileMimeType('RC', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
394      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
395      $r('app.media.hidisk_icon_file_grid_local'), 'text/plain');
396    this.addFileMimeType('SH', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
397      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
398      $r('app.media.hidisk_icon_file_grid_local'), 'text/plain');
399    this.addFileMimeType('TXT', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_TEXT,
400      $r('app.media.hidisk_icon_text'), $r('app.media.hidisk_icon_text_grid'),
401      $r('app.media.hidisk_icon_text_grid_local'), 'text/plain');
402    this.addFileMimeType('XML', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_XML,
403      $r('app.media.hidisk_icon_xml'), $r('app.media.hidisk_icon_xml_grid'),
404      $r('app.media.hidisk_icon_xml_grid_local'), 'text/plain');
405    this.addFileMimeType('SUB', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
406      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
407      $r('app.media.hidisk_icon_file_grid_local'), 'text/x-subviewer');
408    this.addFileMimeType('ASS', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
409      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
410      $r('app.media.hidisk_icon_file_grid_local'), 'text/x-ssa');
411    this.addFileMimeType('SSA', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
412      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
413      $r('app.media.hidisk_icon_file_grid_local'), 'text/x-ssa');
414    this.addFileMimeType('JAD', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
415      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
416      $r('app.media.hidisk_icon_file_grid_local'), 'text/vnd.sun.j2me.app-descriptor');
417    this.addFileMimeType('DHTML', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_HTML,
418      $r('app.media.hidisk_icon_html'), $r('app.media.hidisk_icon_html_grid'),
419      $r('app.media.hidisk_icon_html_grid_local'), 'text/html');
420    this.addFileMimeType('SHTML', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_HTML,
421      $r('app.media.hidisk_icon_html'), $r('app.media.hidisk_icon_html_grid'),
422      $r('app.media.hidisk_icon_html_grid_local'), 'text/html');
423    this.addFileMimeType('TEXT', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_TEXT,
424      $r('app.media.hidisk_icon_text'), $r('app.media.hidisk_icon_text_grid'),
425      $r('app.media.hidisk_icon_text_grid_local'), 'text/plain');
426    this.addFileMimeType('INI', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
427      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
428      $r('app.media.hidisk_icon_file_grid_local'), 'text/plain');
429    this.addFileMimeType('VCS', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
430      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
431      $r('app.media.hidisk_icon_file_grid_local'), 'text/x-vcalendar');
432    this.addFileMimeType('ICS', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
433      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
434      $r('app.media.hidisk_icon_file_grid_local'), 'text/calendar');
435    this.addFileMimeType('JSP', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
436      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
437      $r('app.media.hidisk_icon_file_grid_local'), 'text/html');
438    this.addFileMimeType('ASP', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
439      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
440      $r('app.media.hidisk_icon_file_grid_local'), 'text/html');
441    this.addFileMimeType('PHP', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MORE_TEXT,
442      $r('app.media.hidisk_icon_file'), $r('app.media.hidisk_icon_file_grid'),
443      $r('app.media.hidisk_icon_file_grid_local'), 'text/html');
444    this.addFileMimeType('DOTX', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_WORD,
445      $r('app.media.hidisk_icon_doc'), $r('app.media.hidisk_icon_doc_grid'),
446      $r('app.media.hidisk_icon_doc_grid_local'),
447      'application/vnd.openxmlformats-officedocument.wordprocessingml.template');
448    this.addFileMimeType('DOT', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_WORD,
449      $r('app.media.hidisk_icon_doc'), $r('app.media.hidisk_icon_doc_grid'),
450      $r('app.media.hidisk_icon_doc_grid_local'), 'application/msword');
451    this.addFileMimeType('XLT', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_EXCEL,
452      $r('app.media.hidisk_icon_xls'), $r('app.media.hidisk_icon_xls_grid'),
453      $r('app.media.hidisk_icon_xls_grid_local'), 'application/vnd.ms-excel');
454    this.addFileMimeType('XLTX', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_EXCEL,
455      $r('app.media.hidisk_icon_xls'), $r('app.media.hidisk_icon_xls_grid'),
456      $r('app.media.hidisk_icon_xls_grid_local'),
457      'application/vnd.openxmlformats-officedocument.spreadsheetml.template');
458    this.addFileMimeType('CSV', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_EXCEL,
459      $r('app.media.hidisk_icon_xls'), $r('app.media.hidisk_icon_xls_grid'),
460      $r('app.media.hidisk_icon_xls_grid_local'), 'text/comma-separated-values');
461    this.addFileMimeType('POT', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_POWERPOINT,
462      $r('app.media.hidisk_icon_ppt'), $r('app.media.hidisk_icon_ppt_grid'),
463      $r('app.media.hidisk_icon_ppt_grid_local'), 'application/vnd.ms-powerpoint');
464    this.addFileMimeType('POTX', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_POWERPOINT,
465      $r('app.media.hidisk_icon_ppt'), $r('app.media.hidisk_icon_ppt_grid'),
466      $r('app.media.hidisk_icon_ppt_grid_local'),
467      'application/vnd.openxmlformats-officedocument.presentationml.template');
468    this.addFileMimeType('PPSX', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_MS_POWERPOINT,
469      $r('app.media.hidisk_icon_ppt'), $r('app.media.hidisk_icon_ppt_grid'),
470      $r('app.media.hidisk_icon_ppt_grid_local'),
471      'application/vnd.openxmlformats-officedocument.presentationml.slideshow');
472    this.addFileMimeType('VCF', MimeType.FILE_CATEGORY_TXT, FileMimeTypeUtil.FILE_TYPE_VCF,
473      $r('app.media.hidisk_icon_vcard'), $r('app.media.hidisk_icon_vcard_grid'),
474      $r('app.media.hidisk_icon_vcard_grid_local'), 'text/x-vcard');
475
476    // 音频
477    this.addFileMimeType('3GPP2', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_3GPP2,
478      $r('app.media.hidisk_icon_video'), $r('app.media.hidisk_icon_video_grid'),
479      $r('app.media.hidisk_icon_video_grid_local'), 'audio/3gpp2');
480    this.addFileMimeType('IMY', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_IMY,
481      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
482      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/imelody');
483    this.addFileMimeType('AAC', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_AAC,
484      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
485      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/aac');
486    this.addFileMimeType('AMR', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_AMR,
487      $r('app.media.hidisk_icon_music_amr'), $r('app.media.hidisk_icon_audio_amr_grid'),
488      $r('app.media.hidisk_icon_audio_amr_grid_local'), 'audio/amr');
489    this.addFileMimeType('MID', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_MID,
490      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
491      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/midi');
492    this.addFileMimeType('MPGA', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_MPGA,
493      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
494      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/mpeg');
495    this.addFileMimeType('MXMF', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_MXMF,
496      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
497      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/mobile-xmf');
498    this.addFileMimeType('RTTTL', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_MID,
499      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
500      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/midi');
501    this.addFileMimeType('RTX', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_MID,
502      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
503      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/midi');
504    this.addFileMimeType('SMF', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_SMF,
505      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
506      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/sp-midi');
507    this.addFileMimeType('WAV', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_WAV,
508      $r('app.media.hidisk_icon_music_wav'), $r('app.media.hidisk_icon_audio_wav_grid'),
509      $r('app.media.hidisk_icon_audio_wav_grid_local'), 'audio/x-wav');
510    this.addFileMimeType('WMA', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_WMA,
511      $r('app.media.hidisk_icon_music_wma'), $r('app.media.hidisk_icon_audio_wma_grid'),
512      $r('app.media.hidisk_icon_audio_wma_grid_local'), 'audio/x-ms-wma');
513    this.addFileMimeType('OTA', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_MID,
514      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
515      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/midi');
516    this.addFileMimeType('XMF', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_MID,
517      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
518      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/midi');
519    this.addFileMimeType('OGG', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_OGG,
520      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
521      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/ogg');
522    this.addFileMimeType('PLS', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_PLS,
523      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
524      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/x-scpls');
525    this.addFileMimeType('RA', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_RA,
526      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
527      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/x-pn-realaudio');
528    this.addFileMimeType('RAM', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_RAM,
529      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
530      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/x-pn-realaudio');
531    this.addFileMimeType('MIDI', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_MID,
532      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
533      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/midi');
534    this.addFileMimeType('M3U', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_M3U,
535      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
536      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/x-mpegurl');
537    this.addFileMimeType('M4A', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_M4A,
538      $r('app.media.hidisk_icon_music_m4a'), $r('app.media.hidisk_icon_audio_m4a_grid'),
539      $r('app.media.hidisk_icon_audio_m4a_grid_local'), 'audio/mp4a-latm');
540    this.addFileMimeType('M4B', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_MP4A,
541      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
542      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/mp4a-latm');
543    this.addFileMimeType('M4P', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_MP4A,
544      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
545      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/mp4a-latm');
546    this.addFileMimeType('AWB', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_AWB,
547      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
548      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/amr-wb');
549    this.addFileMimeType('MP2', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_MP2,
550      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
551      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/x-mpeg');
552    this.addFileMimeType('MP3', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_MP3,
553      $r('app.media.hidisk_icon_music_mp3'), $r('app.media.hidisk_icon_audio_mp3_grid'),
554      $r('app.media.hidisk_icon_audio_mp3_grid_local'), 'audio/x-mpeg');
555    this.addFileMimeType('AU', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_AU,
556      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
557      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/basic');
558    this.addFileMimeType('OGA', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_OGG,
559      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
560      $r('app.media.hidisk_icon_audio_grid_local'), 'application/ogg');
561    this.addFileMimeType('WPL', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_WPL,
562      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
563      $r('app.media.hidisk_icon_audio_grid_local'), 'application/vnd.ms-wpl');
564    this.addFileMimeType('AC3', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_AC3,
565      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
566      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/ac3');
567    this.addFileMimeType('MKA', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_MKA,
568      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
569      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/x-matroska');
570    this.addFileMimeType('FLAC', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_FLAC,
571      $r('app.media.hidisk_icon_music_flac'), $r('app.media.hidisk_icon_audio_flac_grid'),
572      $r('app.media.hidisk_icon_audio_flac_grid_local'), 'audio/flac');
573    this.addFileMimeType('AIF', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_AIFF,
574      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
575      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/x-aiff');
576    this.addFileMimeType('AIFF', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_AIFF,
577      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
578      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/x-aiff');
579    this.addFileMimeType('AIFC', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_AIFF,
580      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
581      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/x-aiff');
582    this.addFileMimeType('APE', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_APE,
583      $r('app.media.hidisk_icon_music_ape'), $r('app.media.hidisk_icon_audio_ape_grid'),
584      $r('app.media.hidisk_icon_audio_ape_grid_local'), 'audio/x-ape');
585    this.addFileMimeType('RM', MimeType.FILE_CATEGORY_AUDIO, FileMimeTypeUtil.FILE_TYPE_RM_AUDIO,
586      $r('app.media.hidisk_icon_music'), $r('app.media.hidisk_icon_audio_grid'),
587      $r('app.media.hidisk_icon_audio_grid_local'), 'audio/x-pn-realaudio');
588
589    // 压缩包
590    this.addFileMimeType('GTAR', MimeType.FILE_CATEGORY_ZIP, FileMimeTypeUtil.FILE_TYPE_ZIP,
591      $r('app.media.hidisk_icon_compressed_files'), $r('app.media.hidisk_icon_compress_grid'),
592      $r('app.media.hidisk_icon_compress_grid_local'), 'application/x-gtar');
593    this.addFileMimeType('RAR', MimeType.FILE_CATEGORY_ZIP, FileMimeTypeUtil.FILE_TYPE_RAR,
594      $r('app.media.hidisk_icon_rar'), $r('app.media.hidisk_icon_rar_grid'),
595      $r('app.media.hidisk_icon_rar_grid_local'), 'application/x-rar-compressed');
596    this.addFileMimeType('TAR', MimeType.FILE_CATEGORY_ZIP, FileMimeTypeUtil.FILE_TYPE_TAR,
597      $r('app.media.hidisk_icon_compressed_files'), $r('app.media.hidisk_icon_compress_grid'),
598      $r('app.media.hidisk_icon_compress_grid_local'), 'application/x-tar');
599    this.addFileMimeType('TGZ', MimeType.FILE_CATEGORY_ZIP, FileMimeTypeUtil.FILE_TYPE_TGZ,
600      $r('app.media.hidisk_icon_compressed_files'), $r('app.media.hidisk_icon_compress_grid'),
601      $r('app.media.hidisk_icon_compress_grid_local'), 'application/x-compressed');
602    this.addFileMimeType('Z', MimeType.FILE_CATEGORY_ZIP, FileMimeTypeUtil.FILE_TYPE_Z,
603      $r('app.media.hidisk_icon_compressed_files'), $r('app.media.hidisk_icon_compress_grid'),
604      $r('app.media.hidisk_icon_compress_grid_local'), 'application/x-compressed');
605    this.addFileMimeType('ZIP', MimeType.FILE_CATEGORY_ZIP, FileMimeTypeUtil.FILE_TYPE_ZIP,
606      $r('app.media.hidisk_icon_zip'), $r('app.media.hidisk_icon_zip_grid'),
607      $r('app.media.hidisk_icon_zip_grid_local'), 'application/zip');
608    this.addFileMimeType('JAR', MimeType.FILE_CATEGORY_ZIP, FileMimeTypeUtil.FILE_TYPE_JAR,
609      $r('app.media.hidisk_icon_compressed_files'), $r('app.media.hidisk_icon_compress_grid'),
610      $r('app.media.hidisk_icon_compress_grid_local'), 'text/vnd.sun.j2me.app-descriptor');
611    this.addFileMimeType('GZ', MimeType.FILE_CATEGORY_ZIP, FileMimeTypeUtil.FILE_TYPE_GZ,
612      $r('app.media.hidisk_icon_compressed_files'), $r('app.media.hidisk_icon_compress_grid'),
613      $r('app.media.hidisk_icon_compress_grid_local'), 'application/x-gzip');
614    this.addFileMimeType('BZ', MimeType.FILE_CATEGORY_ZIP, FileMimeTypeUtil.FILE_TYPE_BZ,
615      $r('app.media.hidisk_icon_compressed_files'), $r('app.media.hidisk_icon_compress_grid'),
616      $r('app.media.hidisk_icon_compress_grid_local'), 'application/x-bzip');
617    this.addFileMimeType('BZ2', MimeType.FILE_CATEGORY_ZIP, FileMimeTypeUtil.FILE_TYPE_BZ2,
618      $r('app.media.hidisk_icon_compressed_files'), $r('app.media.hidisk_icon_compress_grid'),
619      $r('app.media.hidisk_icon_compress_grid_local'), 'application/x-bzip2');
620    this.addFileMimeType('7Z', MimeType.FILE_CATEGORY_ZIP, FileMimeTypeUtil.FILE_TYPE_7Z,
621      $r('app.media.hidisk_icon_7z'), $r('app.media.hidisk_icon_7z_grid'),
622      $r('app.media.hidisk_icon_7z_grid_local'), 'application/x-7z-compressed');
623
624    // 安装包
625    this.addFileMimeType('APK', MimeType.FILE_CATEGORY_PKG, FileMimeTypeUtil.FILE_TYPE_APK,
626      $r('app.media.hidisk_icon_application'), $r('app.media.hidisk_icon_application_grid'),
627      $r('app.media.hidisk_icon_application_grid_local'), 'application/vnd.android.package-archive');
628    this.addFileMimeType('HAP', MimeType.FILE_CATEGORY_PKG, FileMimeTypeUtil.FILE_TYPE_HAP,
629      $r('app.media.hidisk_icon_application'), $r('app.media.hidisk_icon_application_grid'),
630      $r('app.media.hidisk_icon_application_grid_local'), 'file/*');
631
632    // 未知
633    this.addFileMimeType('EXE', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
634      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
635      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/octet-stream');
636    this.addFileMimeType('BIN', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
637      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
638      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/octet-stream');
639    this.addFileMimeType('CLASS', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
640      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
641      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/octet-stream');
642    this.addFileMimeType('RAW', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
643      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
644      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/octet-stream');
645    this.addFileMimeType('EPUB', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
646      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
647      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/epub+zip');
648    this.addFileMimeType('EBK3', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
649      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
650      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/x-expandedbook');
651    this.addFileMimeType('SAMI', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
652      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
653      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/x-sami');
654    this.addFileMimeType('SMI', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
655      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
656      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/x-sami');
657    this.addFileMimeType('STR', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
658      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
659      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/x-subrip');
660    this.addFileMimeType('SWF', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
661      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
662      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/x-shockwave-flash');
663    this.addFileMimeType('CAB', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
664      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
665      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/x-shockwave-flash');
666    this.addFileMimeType('CHM', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
667      $r('app.media.hidisk_icon_chm'), $r('app.media.hidisk_icon_chm_grid'),
668      $r('app.media.hidisk_icon_chm_grid_local'), 'application/x-chm');
669    this.addFileMimeType('UMD', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
670      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
671      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/umd');
672    this.addFileMimeType('PDB', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
673      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
674      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/ebook');
675    this.addFileMimeType('DCF', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
676      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
677      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/vnd.oma.drm.content');
678    this.addFileMimeType('K3G', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
679      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
680      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/octet-stream');
681    this.addFileMimeType('MPO', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_UNKNOW,
682      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
683      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/octet-stream');
684    this.addFileMimeType('MMF', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_MMF,
685      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
686      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/vnd.smaf');
687    this.addFileMimeType('QCP', MimeType.FILE_CATEGORY_UNKNOW, FileMimeTypeUtil.FILE_TYPE_QCP,
688      $r('app.media.hidisk_icon_unknown'), $r('app.media.hidisk_icon_unknown_grid'),
689      $r('app.media.hidisk_icon_unknown_grid_local'), 'application/octet-stream');
690  }
691
692  private static getFileMiMeTypeMap(): Map<string, MimeType> {
693    if (FileMimeTypeUtil.fileMimeTypeMap.size === 0) {
694      FileMimeTypeUtil.setFileMimeTypeMap();
695    }
696    return FileMimeTypeUtil.fileMimeTypeMap;
697  }
698
699  public  static getFileMimeType(fileName: string): MimeType {
700    if (StringUtil.isEmpty(fileName)) {
701      return FileMimeTypeUtil.UNKNOW_MIMETYPE;
702    }
703
704    const splitList = fileName.split('.');
705    if (splitList.length < 2) {
706      return FileMimeTypeUtil.UNKNOW_MIMETYPE;
707    }
708
709    let suffix = splitList[splitList.length-1].toUpperCase();
710    // 判断DLP加密文件
711    if (suffix === FileMimeTypeUtil.SUFFIX_DLP) {
712      if (splitList.length === 2) {
713        return FileMimeTypeUtil.UNKNOW_MIMETYPE;
714      }
715      suffix = splitList[splitList.length-2].toUpperCase();
716    }
717    const fileMiMeTypeMap = this.getFileMiMeTypeMap();
718    const mimeType: MimeType = fileMiMeTypeMap.get(suffix);
719    if (!mimeType) {
720      return FileMimeTypeUtil.UNKNOW_MIMETYPE;
721    }
722    return mimeType;
723  }
724
725  public  static getFileSuffix(fileName: string): String {
726    const unKnown: string = '';
727    if (StringUtil.isEmpty(fileName)) {
728      return unKnown;
729    }
730
731    const splitList = fileName.split('.');
732    if (splitList.length < 2) {
733      return unKnown;
734    }
735
736    let suffix = splitList[splitList.length-1].toUpperCase();
737    // 判断DLP加密文件
738    if (suffix === FileMimeTypeUtil.SUFFIX_DLP) {
739      if (splitList.length === 2) {
740        return unKnown;
741      }
742      suffix = splitList[splitList.length-2].toUpperCase();
743    }
744    return suffix;
745  }
746
747  public static getFileTypeOrder(fileName: string): number {
748    const mimeType = this.getFileMimeType(fileName);
749    return mimeType.getFileTypeSort();
750  }
751}
752
753export default FileMimeTypeUtil;
754
755
756