<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 110, comments - 101, trackbacks - 0, articles - 7
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
    在項目中經常會遇到文件加載并解析的問題
    加載Properties文件很簡單 可以直接使用Properties提供的方法就可以了

    如果是加載xml文件
    可以使用 MyTest.class.getClass().getClassLoader().getResourceAsStream(fileName);
            try {
                 DocumentBuilder db;
                 DocumentBuilderFactory dbf 
    = DocumentBuilderFactory.newInstance();
                 dbf.setValidating(
    true);
                 dbf.setNamespaceAware(
    false);

                 db 
    = dbf.newDocumentBuilder();
                 db.setEntityResolver(
    new EntityResolver() {

                     
    public InputSource resolveEntity(String publicId, String systemId) {
                         
    if (systemId.endsWith("mapping.dtd")) {
                             InputStream in 
    = MappingObjectInit.class.getResourceAsStream("mapping.dtd");
                             
    if (in == null{
                                 LogLog.error(
    "Could not find [mapping.dtd]. Used [" + MappingObjectInit.class.getClassLoader() + "] class loader in the search.");
                                 
    return null;
                             }
     else {
                                 
    return new InputSource(in);
                             }

                         }
     else {
                             
    return null;
                         }

                     }

                 }
    );

                 db.setErrorHandler(
    new ErrorHandler() {

                     
    public void warning(SAXParseException exception) {
                     }


                     
    public void error(SAXParseException exception) throws SAXException {
                         logger.error(exception.getMessage() 
    + " at (" + exception.getLineNumber() + ":" + exception.getColumnNumber() + ")");
                         
    throw exception;
                     }


                     
    public void fatalError(SAXParseException exception) throws SAXException {
                         logger.error(exception.getMessage() 
    + " at (" + exception.getLineNumber() + ":" + exception.getColumnNumber() + ")");
                         
    throw exception;
                     }

                 }
    );
               
    return db; 
            }
     catch (Exception e) {
                logger.error(
    "", e);
            }

    上面得到DocumentBuilder對象,然后就可以解析xml了


        private static void loadConfigurationFile(String fileName, DocumentBuilder db) {
            Document doc 
    = null;
            InputStream is 
    = null;
            
    try {
                is 
    = MappingObjectInit.class.getClass().getClassLoader().getResourceAsStream(fileName);
                doc 
    = db.parse(is);
            }
     catch (Exception e) {
                
    final String s = "Caught exception while loading file " + fileName;
                logger.error(s, e);
                
    throw new DataAccessException(s, e);
            }
     finally {
                
    if (is != null{
                    
    try {
                        is.close();
                    }
     catch (IOException e) {
                        logger.error(
    "Unable to close input stream", e);
                    }

                }

            }

            Element rootElement 
    = doc.getDocumentElement();
            NodeList children 
    = rootElement.getChildNodes();
            
    int childSize = children.getLength();

            
    for (int i = 0; i < childSize; i++{
                Node childNode 
    = children.item(i);

                
    if (childNode instanceof Element) {
                    Element child 
    = (Element) childNode;

                    
    final String nodeName = child.getNodeName();
                    
    if (nodeName.equals("mapping")) {
                        String className 
    = child.getAttribute("class");
                        Class cls;
                        
    try {
                            cls 
    = Class.forName(className);
                            MappingMgt.reg(cls);
                        }
     catch (ClassNotFoundException e) {
                            logger.error(
    "load configurFile from :"+fileName, e);
                        }

                        
                    }
      
                }

            }


            
    if (logger.isInfoEnabled()) {
                logger.info(
    "Loaded Engine configuration from: " + fileName);
            }

        }

    如果使用了spring 還可以使用spring的文件加載類來加載

     <bean id="propertyConfigurer"
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="locations">
       <list>
        <value>file:${config.path}jdbc.properties</value>
        <value>file:${config.path}jms.properties</value>
       </list>
      </property>
     </bean>


    String inputstream 互相轉換

    1. String --> InputStream
    InputStream String2InputStream(String str){
       ByteArrayInputStream stream = new ByteArrayInputStream(str.getBytes());
       return stream;
    }

    2. InputStream --> String
    String inputStream2String(InputStream is){
       BufferedReader in = new BufferedReader(new InputStreamReader(is));
       StringBuffer buffer = new StringBuffer();
       String line = "";
       while ((line = in.readLine()) != null){
         buffer.append(line);
       }
       return buffer.toString();
    }


    3、File --> InputStream
    InputStream in = new InputStream(new FileInputStream(File));

    上面這行報錯,new InputStream 報錯

    下面這樣寫即可

    new FileInputStream(file)

    4、InputStream --> File
    public void inputstreamtofile(InputStream ins,File file){
    OutputStream os = new FileOutputStream(file);
    int bytesRead = 0;
    byte[] buffer = new byte[8192];
    while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
    os.write(buffer, 0, bytesRead);
    }
    os.close();
    ins.close();
    }




    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 中文字幕在线免费视频| 99精品在线免费观看| 七次郎成人免费线路视频| 无码国产精品久久一区免费| 国产成人涩涩涩视频在线观看免费| 亚洲国语在线视频手机在线| 久久久久国产精品免费看| 久久精品亚洲综合一品| 叮咚影视在线观看免费完整版| 免费99精品国产自在现线| 亚洲激情黄色小说| 一级做a爱片特黄在线观看免费看| 免费在线观看黄色毛片| 亚洲乱码一二三四区麻豆| 57PAO成人国产永久免费视频| 亚洲国产成人久久三区| 操美女视频免费网站| 精品在线免费视频| 国产激情免费视频在线观看| 免费人妻av无码专区| caoporn国产精品免费| 日本一道高清不卡免费| 亚洲精品偷拍视频免费观看| 国产V亚洲V天堂A无码| xxxxx免费视频| 亚洲国产一区国产亚洲| 国产精品偷伦视频免费观看了 | 国产一级一片免费播放i| 免费的黄色的网站| 亚洲午夜久久久久久噜噜噜| 久久不见久久见免费视频7| 亚洲最大天堂无码精品区| 免费在线观看你懂的| 少妇人妻偷人精品免费视频| 在线观看亚洲AV日韩AV| 中文字幕无码精品亚洲资源网| 色欲色欲天天天www亚洲伊| 久久精品国产精品亚洲艾草网美妙| 95老司机免费福利| 国产成人人综合亚洲欧美丁香花 | 亚洲色偷精品一区二区三区|