开发者社区> 问答> 正文

Java读取文件问题:报错

package com.book.util;

import java.io.File;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.bowlong.helper.xml.XMLHelper;

public class DomXml {
	public static DomXml my = new DomXml();
	public static Map<String , Sitesign> map = null;
	public static Map<String , Sitesign> getSitesignMap(){	
		if (map==null) {
			map =  new HashMap<String, Sitesign>();
			try {
				SAXReader saxReader = new SAXReader();
//				InputStream is = my.getClass().getResourceAsStream("..\\resources\\sitesign.xml");
//				Document doc = XMLHelper.parseFromStream(is);
//				Element root = doc.getRootElement();
//				XMLHelper.getElementTextString(root);
				Document document = saxReader.read(new File("resources/sitesign.xml"));
				Element element = document.getRootElement(); // 得到Element对象
				List<Element> list = element.elements("SiteSign"); // 取得节点集合
				Sitesign ss = null;
				for (Element e : list) {
					ss = new Sitesign();
					ss.setName(e.elementText("name"));
					ss.setUrl(e.elementText("url"));
					ss.setListStart(e.elementText("ListStart"));
					ss.setListEnd(e.elementText("ListEnd"));
					ss.setContentStart(e.elementText("ContentStart"));
					ss.setContentEnd(e.elementText("ContentEnd"));
					ss.setNeedDelStr(e.elementText("NeedDelStr"));
					map.put(ss.getUrl().split("/")[2], ss);
				}
			} catch (DocumentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} // 读取XML文件
		}		
		return map;
	}
	public static void main(String[] args) {
		System.out.println(getSitesignMap().size());	
	}
}
在本类中可以读到,其他的函数里也能  读到    问什么在其他类中的run函数里面   一直说是路径不对,求解!!!

展开
收起
kun坤 2020-06-08 17:32:49 769 0
1 条回答
写回答
取消 提交回答
  • 你用的是相对路径,当然可能,这跟你的程序在什么路径下启动是有密切联系的。######我这是一个基于Tomcat的web项目   不启动服务器   直接写测试类  能够找到文件 而启动服务器后,里面的逻辑去调用就说路径不对!找了很久! 都没有找到处理办法!    急!!###### 急啥啊,用绝对路径吧###### 这是项目结构######建议参考这个代码: http://www.oschina.net/code/snippet_81246_3487######部署以后,确认一下sitesign.xml是否在WEB-INF/classes/resources/下 String siteSignPath=DomXml.class.getResource("/resources/sitesign.xml").getPath(); Document document = saxReader.read(new File(siteSignPath ));
    这样使用应该是可以的 ######本地调用的话,路径是你的DomXml.class为当前路径 tomcat里面用的话,就以tomcat所在位当前路径了######谢谢7楼   正解

    2020-06-08 17:32:55
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载