1 package org.apache.maven.archetype.common.util;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import com.ibm.icu.text.CharsetDetector;
23 import com.ibm.icu.text.CharsetMatch;
24 import org.codehaus.plexus.logging.AbstractLogEnabled;
25
26 import java.io.BufferedInputStream;
27 import java.io.File;
28 import java.io.FileInputStream;
29 import java.io.IOException;
30 import java.io.InputStream;
31 import java.util.Locale;
32
33
34
35
36 public class FileCharsetDetector
37 extends AbstractLogEnabled
38 {
39 private final String charset;
40
41 public FileCharsetDetector( File detectedFile )
42 throws IOException
43 {
44 try ( FileInputStream fileInputStream = new FileInputStream( detectedFile );
45 BufferedInputStream is = new BufferedInputStream( fileInputStream ) )
46 {
47 CharsetDetector detector = new CharsetDetector();
48 detector.setText( is );
49 CharsetMatch match = detector.detect();
50
51 charset = match.getName().toUpperCase( Locale.ENGLISH );
52 }
53 }
54
55
56
57 public FileCharsetDetector( InputStream detectedStream )
58 throws IOException
59 {
60 CharsetDetector detector = new CharsetDetector();
61 detector.setText( detectedStream );
62 CharsetMatch match = detector.detect();
63
64 charset = match.getName().toUpperCase( Locale.ENGLISH );
65 }
66
67 public String getCharset()
68 {
69 return charset;
70 }
71
72 public boolean isFound()
73 {
74 return true;
75 }
76 }