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