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




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


    網站導航:
     
    主站蜘蛛池模板: japanese色国产在线看免费| 91精品免费在线观看| 久久久亚洲精品视频| 中国在线观看免费高清完整版| 亚洲欧美在线x视频| 亚洲欧洲一区二区三区| 亚洲一区二区免费视频| 日韩成人精品日本亚洲| 亚洲日本一区二区三区| 国产精品无码免费视频二三区| 免费看一区二区三区四区| 亚洲日韩中文字幕无码一区| 亚洲人成网亚洲欧洲无码久久| 亚洲免费福利在线视频| 黄色网址免费在线观看| 亚洲乱码一区二区三区国产精品| 亚洲综合无码精品一区二区三区| 成年女人18级毛片毛片免费观看| 黄桃AV无码免费一区二区三区 | 亚洲av中文无码乱人伦在线播放| 国产卡二卡三卡四卡免费网址| 久青草视频在线观看免费| 亚洲爆乳无码专区www| 亚洲精品视频在线观看免费| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 国产男女猛烈无遮挡免费网站| 一级片在线免费看| 久久精品国产亚洲AV蜜臀色欲| 亚洲精品午夜无码专区| 又黄又爽无遮挡免费视频| 久久精品免费全国观看国产| 青青草原1769久久免费播放 | 国产曰批免费视频播放免费s| 久久性生大片免费观看性| 国产精品亚洲综合网站| 亚洲已满18点击进入在线观看| 亚洲一区二区三区日本久久九| 亚洲自偷自偷偷色无码中文| 可以免费观看的一级毛片| 99视频在线精品免费观看6| 18禁美女黄网站色大片免费观看 |