关于用javabean调用和他在同一目录下的文件的问题?

feishao45 2005-04-04 12:13:25

String theFiel="bbs.xml";//这个放在和这个类文件同一目录下;
//获取xml文档结构

//FileInputStream in=new FileInputStream(theFile);//这句不行
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(getClass().getResourceAsStream(theFile));//这句可以运行
Element root = doc.getRootElement();

问题如下:
用getClass().getResourceAsStream(theFile)可以正确的访问bbs.xml文件,而用FileInputStream in=new FileInputStream(theFile)却访问不了,以上情况说的都是通过jsp页面调用这个javabean的情况,如果用java直接调用运行则两个都可行。

是不是javabean文件访问文件必须用绝对路径啊?!

其实如果只是要一个输入流,上面我已经找到了方法,getClass().getResourceAsStream(theFile)就可行,关键是我现在需要一个输出流来修改这个bbs.xml文件。

我试了一下,用fileoutputstream时只有绝对路径我才能访问这个bbs.xml文件,相对路径通过jsp页面调用这个javabean时,javabean访问不了,所以我现在就必须在写一个获取这个文件绝对路径的方法。

不知道各位大虾有没有什么更好的方法没有,我现在只想到了一个办法,那就是通过在jsp页面的application.getRealPath()方法来获取bbs.xml的绝对路径,然后作为参数传给这个bean文件。
在线等……谢谢拉。
...全文
74 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
feishao45 2005-04-04
  • 打赏
  • 举报
回复
本来写的这个里面是没有的 httprequest;我就想有没有和getClass().getResourceAsStream()同样实用的方法的,谢谢大家。
jianghuxing 2005-04-04
  • 打赏
  • 举报
回复


import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
import com.netec.congress.business.xml.DataToXML;


public class DataImportOutput {
private static Document doc = null;

public DataImportOutput(Document document){
DataImportOutput.doc=document;
}

private String otputDOMToXMLString(Document doc) throws IOException {
String XMLString = "";
//建立dom的输出格式
OutputFormat format = new OutputFormat(doc);
StringWriter stringOut = new StringWriter();
XMLSerializer serial = new XMLSerializer(stringOut, format);
serial.asDOMSerializer();
serial.serialize(doc.getDocumentElement());
XMLString = stringOut.toString();
System.out.println(XMLString);
return XMLString;
}

private void saveXMLString(String XMLString, String fileName)
throws IOException {
File file = new File(fileName);
if (file.exists()) {
file.delete();
}

file.createNewFile();
if (file.canWrite()) {
FileWriter fileOut = new FileWriter(file);
fileOut.write(XMLString);
fileOut.close();
}
}

public void saveDOMToXML(String filePath, Document doc) throws IOException {
String XMLString = null;
XMLString = this.otputDOMToXMLString(doc); //把document转为字符串型
this.saveXMLString(XMLString, filePath); //保存为xml格式
}

public Element getTableDOM(String tableName, List rowsList) {
Element columNameElement=null;
Text columTextNode=null;
String columName = "";
String columValue = "";
Set set=null;
HashMap map=null;
DataToXML dataToXML=null;
Element row=null;
Iterator iterator=null;

Iterator rowIterator = rowsList.iterator();

Element table = doc.createElement("table"); //创建table结点
Attr attr = doc.createAttribute("tableName"); //创建table结点的属性结点tableName
attr.setValue(tableName); //设置属性结点的属性值为传入参数tableName
table.setAttributeNode(attr); //把属性结点添加到table结点上

while (rowIterator.hasNext()) {
row = doc.createElement("row");
dataToXML = (DataToXML) rowIterator.next();
map = dataToXML.getMap();//map中保存着表的所有字段名,及字段对应的值
set = map.keySet();
iterator = set.iterator();
while (iterator.hasNext()) {
columName = (String) iterator.next();
columValue = (String) map.get(columName);
columNameElement = doc.createElement(columName);
columTextNode = doc.createTextNode(columValue);
columNameElement.appendChild(columTextNode);
row.appendChild(columNameElement);
}
table.appendChild(row);
}

return table;
}



}
保存XML文件的一个类, 使用如下。:

String path = this.getServlet().getServletContext().getRealPath(
"congress\\exportdata\\");
得到文件路径+文件名:


public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {

String path = this.getServlet().getServletContext().getRealPath(
"congress\\exportdata\\");

ExportForm exprotForm = (ExportForm) form;
exportButton = exprotForm.getExportButton();

button = request.getParameter("button");
fileName = request.getParameter("fileName");

DataExportToXML dataExport = new DataExportToXML();

if (button != null) {
filePath = path + "\\" + fileName;
dataExport.deleteFile(filePath);

}
if (exportButton != null) {

String fileName = "" + System.currentTimeMillis();
filePath = path + "\\" + fileName + ".xtdb";
try {
dataExport.DataExportToFile(filePath);
} catch (IOException e) {
mapping.findForward("exception");
e.printStackTrace();
}
}

List list = null;
Resources aaa = new Resources();
list = dataExport.getFiles(path, ".xtdb");
SplitPagePara paraList = new SplitPageParaSon();
paraList.setData(list);
Iterator ite = list.iterator();
while (ite.hasNext()) {
FileInformation fileinfo = (FileInformation) ite.next();
}
request.getSession().setAttribute("exportFiles", paraList);
return mapping.findForward("success");
}
}
jFresH_MaN 2005-04-04
  • 打赏
  • 举报
回复
使用request.getContexPath()得到项目的根目录
然后使用绝对路径
这个方法解决所有路径问题。。

建议使用这个
tssungeng 2005-04-04
  • 打赏
  • 举报
回复
同样的问题,帮你顶!
剑事 2005-04-04
  • 打赏
  • 举报
回复
放在classes里可以这么写 不然../包/bbs.xml
本课程详细讲解了以下内容:    1.jsp环境搭建及入门、虚拟路径和虚拟主机、JSP执行流程    2.使用Eclipse快速开发JSP、编码问题、JSP页面元素以及request对象、使用request对象实现注册示例    3.请求方式的编码问题、response、请求转发和重定向、cookie、session执行机制、session共享问题     4.session与cookie问题及application、cookie补充说明及四种范围对象作用域     5.JDBC原理及使用Statement访问数据库、使用JDBC切换数据库以及PreparedStatement的使用、Statement与PreparedStatement的区别     6.JDBC调用存储过程和存储函数、JDBC处理大文本CLOB及二进制BLOB类型数据     7.JSP访问数据库、JavaBean(封装数据和封装业务逻辑)     8.MVC模式与Servlet执行流程、Servlet25与Servlet30的使用、ServletAPI详解与源码分析     9.MVC案例、三层架构详解、乱码问题以及三层代码流程解析、完善Service和Dao、完善View、优化用户体验、优化三层(加入接口和DBUtil)    1 0.Web调试及bug修复、分页SQL(Oracle、MySQL、SQLSERVER)     11.分页业务逻辑层和数据访问层Service、Dao、分页表示层Jsp、Servlet     12.文件上传及注意问题、控制文件上传类型和大小、下载、各浏览器下载乱码问题     13.EL表达式语法、点操作符和中括号操作符、EL运算、隐式对象、JSTL基础及set、out、remove     14.过滤器、过滤器通配符、过滤器链、监听器     15.session绑定解绑、钝化活化     16.以及Ajax的各种应用     17. Idea环境下的Java Web开发

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧