你没有说你正在使用什么环境,我猜你没有使用服务器端环境。JavaScript 通常在浏览器中工作以响应用户的点击和鼠标移动等,但严格在浏览器的范围内。您要做的是在浏览器正在运行的底层操作系统(如果您在本地运行)或在普通网页环境中的服务器端操作系统上执行 I/O 操作。这不仅仅是一个安全问题——JavaScript 与客户端操作系统或服务器端操作系统没有任何直接连接。
您需要的是一个像 Apache 或 IIS 等的 Web 服务器环境,可能运行像 ASP.NET、JSP、PHP(具有像 CodeIgniter 这样的好框架)这样的环境,或者,而不是我,CGI。
用户单击链接或提交按钮,并向服务器发送请求。相关的服务器端程序处理请求,运行您所说的 I/O 操作并以文本响应。JavaScript 在大部分过程中都无关紧要。只有当您试图弄清楚如何以某种奇特的动态方式显示响应时,它才会再次出现。
那里有数百万个教程:
说了这么多,有一个服务器端的 JavaScript 环境(http://nodejs.org/),但关键是你总是会受到 http 协议的限制,这意味着你向服务器发送请求,服务器根据您作为客户端的权限处理您的请求,在适当的情况下执行 I/O 操作,并以 HTML 流响应。它不允许在服务器上进行直接操作。
这一切都不容易。期待陡峭的学习曲线。
显示文本文件内容
这是一个示例 JSP 页面,它将读取文本文件的内容,然后将其显示在网页上。我没有添加任何按钮或任何东西——它只是演示了如何读取服务器上的文件:
<%@page contentType="text/html" pageEncoding="UTF-8" import="java.io.*"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>BufferedReader</title>
</head>
<body>
<%
String path = this.getServletContext().getRealPath("/target/message.txt");
File file = new File(path);
FileReader reader = new FileReader(file);
BufferedReader br = new BufferedReader(reader);
while(br.ready()){
out.print(br.readLine() + "<BR>");
}
reader.close();
%>
</body>
</html>
/target/message.txt
是虚拟绝对路径(从 webapp 的根目录开始)。调用getRealPath
是您获得允许您创建 File 对象的真实物理路径的方式。
稍后我会看看使用exec
来运行批处理文件,但现在您正在考虑像 Java 这样功能强大的语言/库,为什么要运行批处理文件?用Java编写程序没有意义吗?