javaweb不能正常向文件中写入数据

public class ExcelUtil extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext sc = this.getServletContext();
System.out.print(sc.getRealPath("result.txt"));
writeFile(sc.getRealPath("result.txt"), "123");
}
public void writeFile(String writepath, String excelcontent) {
File file = new File(writepath);
FileWriter fw;
try {
fw = new FileWriter(file, true);
fw.write(excelcontent);
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
我把result.txt放到了WEB-INF下但是不能正常写入,不知道什么原因,可能是因为路径写错了吧,谢谢帮助啊。

(1)ServletContext sc = this.getServletContext();
这句话不知道你认为this指的是什么?一般的写法都是从request里取ServletContext而不是从Servlet里面取,感觉应该这样写才对:ServletContext sc = req.getServletContext();
(2)sc.getRealPath("result.txt"),首先要保证有这个文件,其次,如果你将其放在WEB-INF下面要写成sc.getRealPath("\WEB-INF\result.txt");你有两个错误点:1是没有加WEB-INF这层文件夹;2是没有在文件名的最开头加“\”;
(3)FileWrite里可以直接写文件路径字符串的,不需要先转换成File的。
(4)fw.close()不要放到try里,要放到finally里,否则万一try里出了错误无法继续执行,你的fw就关不掉了。
(5)如果你是用IDE开发的比如MyEclipse等,你要注意不要到你工程的WEB-INF下面的result.txt中去查看是否已经写入,而是要到你的Tomcat下WEB-INF的result.txt中去看。因为最终IDE都是把工程部署到Tomcat下面去运行的,自然result.txt这个文件也会被复制到tomcat那边去。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-27
出现问题的原因是,当前要写入的文件流没有被关闭,之后再次写入的时候就会出现这个无法写入的问题。举例:
通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储:
OutputStreamWriter pw = null;//定义一个流
pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.txt”实例
pw.write("我是要写入到记事本文件的内容");//将要写入文件的内容
pw.close();//关闭流,如果此处不关闭,再次写入的时候就会报错
备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,并且再次写入的时候就会报错无法写入,所以已有开发一定记得及时关闭不需要的流。

javaweb不能正常向文件中写入数据
(1)ServletContext sc = this.getServletContext();这句话不知道你认为this指的是什么?一般的写法都是从request里取ServletContext而不是从Servlet里面取,感觉应该这样写才对:ServletContext sc = req.getServletContext();(2)sc.getRealPath("result.txt"),首先要保证有这个文件,其次,如果你将...

为什么使用javaweb的时候向数据库添加数据的时候添加的东西全部为空代码...
可能是因为你数据库的字段设置为允许为空,所以插入的时候可以插入空值。

请问一下 我写的javaweb 传不过去值 怎么回事 显示null 怎么改啊_百 ...
1:在你写的form表单里是post的提交方式,而你的Serlvet方法是写在doget()里,应在写在dopost()里 2:form表单里的action="\/"注意斜杠不能忽略,不然Server找不到对应路径 3:注意在web.xml里配置Serlvet的<url-pattern>\/*<\/url-pattern>,这里是映射你的请求链接的 4:你在serlvet里写,可以用P...

java web 开发。在java程序中如何向某个文件中写数据,我的数据是JSONOb...
public static void main(String [] arg) throws UnsupportedEncodingException, IOException { JSONObject a=JSONObject.fromObject("{a=9}");FileOutputStream fos=new FileOutputStream("D:\/1.txt");fos.write(a.toString().getBytes("UTF-8"));fos.flush();fos.close();} ...

从javaweb项目中向oracle插入数据出现中文乱码
2、如果是用Servlet或者别的,插入数据之前输出一下,看看是否乱码。比如:doPost() \/\/设置接受编码,但你的页面也必须是UTF-8 response.setContentType("text\/html;charset=UTF-8");doGet() \/\/下面方式转一下码 String username = new String(request.getParameter("username").getBytes...

在java web项目中如何向两张有主外键关系的表中插入数据
如果你用HIBERNATE配置好的话,是会自动插。如果没有,那你就自己控制,先插主表,再插子表,注意要控制在一个事务之内

java怎样向一个文件(如txt文件)中写入一段数据,保存后下一次打开继续使...
根据给定的 File 对象构造一个 FileWriter 对象。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。例子程序如下:import java.io.File ;import java.io.Writer ;import java.io.FileWriter ;public class WriterDemo02{public static void main(String args[]) throws Exception}...

java web中用Javabean创建的set方法中存储不到数据怎么办?求大神解答...
所以这个问题报空指针的原因是:hygienic对象是null,也就是说在这里要从session中取这个对象之前,没有往session中存放。另外对于刚学java的同学来说,需要注意一下命名规范。最好不要用中文。如果有帮助到你,请点击采纳。我解答的大部分是软件开发新人遇到的问题,如果有兴趣可以关注我。

java和javaweb的区别
二、所需技术栈不同 Java编程主要涉及到Java语言的基本语法、面向对象的设计和编程、异常处理、IO操作、多线程等基础知识;而Java Web除了需要掌握Java的基本知识外,还需要掌握HTML、CSS、JavaScript、Servlet、JSP、Web服务器(如Tomcat)、数据库技术(如MySQL)等。三、开发复杂度不同 Java编程的复杂度...

java与web的区别(java和javaweb一样吗)
3、)前端开发人员:精通JS,能熟练应用JQuery,懂CSS,能熟练运用这些知识,进行交互效果的开发。2)后端开发人员:会写Java代码,会写SQL语句,能做简单的数据库设计,会Spring和iBatis,懂一些设计模式等。4、要搞懂区别,我们首先要知道他们是什么。Web前端:就是用来作我们可以看得到的像网站页面,aap...

相似回答