<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();
    }




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


    網站導航:
     
    主站蜘蛛池模板: 久久精品国产亚洲网站| 免费大片黄手机在线观看| 亚洲精品午夜无码专区| 特级av毛片免费观看| 免费涩涩在线视频网| 亚洲二区在线视频| 国产91色综合久久免费分享| 亚洲嫩模在线观看| 日韩精品内射视频免费观看 | 美女被免费网站视频在线| 日韩免费观看视频| 亚洲国产精品成人午夜在线观看| 亚洲免费综合色在线视频| 亚洲毛片基地4455ww| 日本亚洲免费无线码| 国产精品亚洲一区二区麻豆| 毛片免费视频在线观看| 亚洲色大成网站www| 成年女人午夜毛片免费视频| 亚洲色精品三区二区一区| 精品免费国产一区二区三区| 羞羞的视频在线免费观看| 亚洲人成人网站在线观看| a毛片在线看片免费| 久久精品国产亚洲av高清漫画 | 免费黄色福利视频| 亚洲粉嫩美白在线| 免费一级毛片免费播放| 久久毛片免费看一区二区三区| 亚洲精品无码成人片久久| 99久久免费精品高清特色大片| 亚洲不卡中文字幕| www国产亚洲精品久久久日本| 91免费国产视频| 亚洲美女大bbbbbbbbb| 99精品全国免费观看视频| 日韩免费码中文在线观看| 亚洲图片在线观看| 国产成人啪精品视频免费网| a级毛片免费完整视频| 亚洲一区二区三区高清不卡 |