| @@ -4,6 +4,15 @@ import com.cybozu.labs.langdetect.Detector; | |||||
| import com.cybozu.labs.langdetect.DetectorFactory; | import com.cybozu.labs.langdetect.DetectorFactory; | ||||
| import com.cybozu.labs.langdetect.LangDetectException; | import com.cybozu.labs.langdetect.LangDetectException; | ||||
| import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
| import lombok.var; | |||||
| import org.springframework.core.io.Resource; | |||||
| import org.springframework.core.io.support.PathMatchingResourcePatternResolver; | |||||
| import sun.misc.IOUtils; | |||||
| import java.io.IOException; | |||||
| import java.io.InputStream; | |||||
| import java.util.ArrayList; | |||||
| import java.util.List; | |||||
| @Slf4j | @Slf4j | ||||
| public class LanguageDetect { | public class LanguageDetect { | ||||
| @@ -13,8 +22,28 @@ public class LanguageDetect { | |||||
| private static void initDetector(){ | private static void initDetector(){ | ||||
| if(detect == null){ | if(detect == null){ | ||||
| try { | try { | ||||
| DetectorFactory.loadProfile(LanguageDetect.class.getClassLoader().getResource("profiles").getPath()); | |||||
| detect = DetectorFactory.create(); | |||||
| List<String> profile = new ArrayList<>(); | |||||
| try { | |||||
| PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); | |||||
| Resource[] resources = resolver.getResources("classpath:profiles/*"); | |||||
| for (Resource resource:resources) { | |||||
| try { | |||||
| byte[] bytes = new byte[0]; | |||||
| bytes = new byte[resource.getInputStream().available()]; | |||||
| resource.getInputStream().read(bytes); | |||||
| profile.add(new String(bytes)); | |||||
| } catch (IOException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| } | |||||
| } catch (IOException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| if(!profile.isEmpty()){ | |||||
| DetectorFactory.loadProfile(profile); | |||||
| detect = DetectorFactory.create(); | |||||
| } | |||||
| } catch (LangDetectException e) { | } catch (LangDetectException e) { | ||||
| e.printStackTrace(); | e.printStackTrace(); | ||||
| log.error("语言检测初始化错误。"+e.getMessage()); | log.error("语言检测初始化错误。"+e.getMessage()); | ||||
| @@ -45,7 +74,29 @@ public class LanguageDetect { | |||||
| return null; | return null; | ||||
| } | } | ||||
| public static void main(String[] args) { | public static void main(String[] args) { | ||||
| System.out.println(detect("aa")); | |||||
| var resolver = new PathMatchingResourcePatternResolver(); | |||||
| Resource[] resources = new Resource[0]; | |||||
| try { | |||||
| resources = resolver.getResources("classpath:profiles/*"); | |||||
| } catch (IOException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| for (var resource:resources) { | |||||
| System.out.println(resource.getFilename()); | |||||
| try { | |||||
| byte[] bytes = new byte[0]; | |||||
| bytes = new byte[resource.getInputStream().available()]; | |||||
| resource.getInputStream().read(bytes); | |||||
| String str = new String(bytes); | |||||
| System.out.println(str); | |||||
| } catch (IOException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| } | |||||
| // System.out.println(detect("aa")); | |||||
| } | } | ||||
| } | } | ||||