用JAVA生成输出
我们可以用java生成一个.html文档吗?通常我们在运行java程序时会得到输出。我想以.html或.doc格式生成输出,这是java中的一种方法吗 用于HTML 只需使用原始文件io操作将数据写入.html文件(它们只是扩展名为.html的文本文件) 例如:用JAVA生成输出,java,html,Java,Html,我们可以用java生成一个.html文档吗?通常我们在运行java程序时会得到输出。我想以.html或.doc格式生成输出,这是java中的一种方法吗 用于HTML 只需使用原始文件io操作将数据写入.html文件(它们只是扩展名为.html的文本文件) 例如: StringBuilder sb=新建StringBuilder(); 某人加上(“”); 某人加上(“”); sb.附加(“页面标题”); 某人加上(“”); 某人加上(“”); 某人附加(“你好世界”); 某人加上(“”); 某人加
StringBuilder sb=新建StringBuilder();
某人加上(“”);
某人加上(“”);
sb.附加(“页面标题”);
某人加上(“”);
某人加上(“”);
某人附加(“你好世界”);
某人加上(“”);
某人加上(“”);
FileWriter fstream=newFileWriter(“MyHtml.html”);
BufferedWriter out=新的BufferedWriter(fstream);
写出(某人写的东西);
out.close();
用于word文档
输出就是输出。它意味着什么以及你如何使用它完全取决于你自己 如果您
System.out.println(“helloworld!”)代码>您刚刚生成了HTML
.doc
格式显然有点棘手,因为这不是一个简单的放入标记的问题,但是有一些库可以完成这项工作。谷歌可以提供更多的建议。当然
一般方法是:在内存中创建文档,即在StringBuilder
中创建文档,并将该生成器的内容写入文件
StringBuilder htmlBuilder = new StringBuilder();
htmlBuilder.append("<html><body>");
htmlBuilder.append("Hello world!");
htmlBuilder.append("</body></html>\n");
FileWriter writer = new FileWriter(System.getProperty("user.home") + "/hello.html");
writer.write(htmlBuilder.toString());
writer.close();
StringBuilder htmlBuilder=新StringBuilder();
htmlBuilder.append(“”);
附加(“你好,世界!”);
htmlBuilder.append(“\n”);
FileWriter=newfilewriter(System.getProperty(“user.home”)+“/hello.html”);
write(htmlBuilder.toString());
writer.close();
将其放入main
方法中,执行后,您将在主目录中找到一个html文件html只是纯文本。只需将HTML代码写入文件或标准输出
Word文件更复杂。看看库,比如。我不知道你为什么这么说:
通常情况下,我们都会得到输出
我们运行java程序
今天我运行了一些java程序,但它们没有使用cmd提示符执行任何操作。如果您使用的是system.out.println
,是的,但大多数高级程序都有一点更多的通信功能。像一个接口:)
您要做的是查看文件处理程序。打开(或创建)一个文件,将内容写入该文件,然后关闭它。那么你有一个文件。您可以将任何您想要的东西写入该文件,因此很明显,它也可以成为HTML或文档。在文件写入时很容易找到检查以下内容:
try {
BufferedWriter out = new BufferedWriter(new FileWriter("outfilename.html"));
out.write("aString"); //Here you pass your output
out.close();
} catch (IOException e) {
}
您需要导入BufferedWriter、FileWriter和IOException,它们位于java.io下
“aString”应该是一个字符串变量,用于存储html代码或文档xml。要生成html文档,您应该写入文件。因为HTML是一种文本格式,所以您需要写入文本文件。这样做需要这些类
java.io.File-表示文件系统中的位置
java.io.FileWriter—这将建立从程序到文件的连接
java.io.BufferedWriter—这支持文本的缓冲写入,速度更快
java.io.IOException—如果写入时出现问题,就会抛出其中一个问题
档案。这是一个已检查(相对于运行时)的异常,您必须处理它
Head First Java书籍非常详细地介绍了这些类,并向您展示了如何使用它们。要使用这些,您必须首先了解异常处理。这也包含在headfirstjava中
我希望这能让你开始 如果您有一些类似文档的数据(结构化),我建议您使用DOM(文档对象模型),然后将其转换为所需的格式(xml、html、doc等等)。但是,如果您只有一些应用程序输出,就可以轻松地用html将其包装起来。不一定在java中—您也可以将程序的输出存储在纯文本文件中,稍后再转换为html(添加正文、段落、标题和其他html元素)。正如其他人回答的那样,html只是带有一组标记的纯文本。我的建议是,如果您正在做的事情比输出一个基本的HTML片段更复杂,那么使用一个模板引擎,比如
StringTemplate允许您创建如下所示的文本文件(实际上是HTML文件):
<html>
<head>
<title>Example</title>
</head>
<body>
<p>Hello $name$</p>
</body>
</html>
这将在屏幕上打印以下结果:
<html>
<head>
<title>Example</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
例子
你好,世界
当然,上面的示例Java代码不是完整的代码,但它说明了如何使用仍然有效的HTML模板(使在HTML编辑器中编辑更容易),同时保持Java代码的简单性(通过避免在System.out.println
语句中使用一堆HTML标记)
至于MS Office.doc格式,它更复杂,你可以研究一下。我过去已经觉得有必要,我最终开发了一个java库——HtmlFlow(部署在)——它提供了一个简单的API来以流畅的风格编写HTML。请在此处查看:
您可以使用带或不带数据绑定的HtmlFlow,但这里我提供了一个将任务
对象的属性绑定到HTML元素的示例。请考虑一个具有三个属性的<<代码>任务> /Cuth.java类:<代码>标题<代码>,<代码>描述>代码>和<>代码>优先级>代码>,然后我们可以用以下方式为<代码>任务对象生成HTML文档:
import htmlflow.HtmlView;
import model.Priority;
import model.Task;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
public class App {
private static HtmlView<Task> taskDetailsView(){
HtmlView<Task> taskView = new HtmlView<>();
taskView
.head()
.title("Task Details")
.linkCss("https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css");
taskView
.body().classAttr("container")
.heading(1, "Task Details")
.hr()
.div()
.text("Title: ").text(Task::getTitle)
.br()
.text("Description: ").text(Task::getDescription)
.br()
.text("Priority: ").text(Task::getPriority);
return taskView;
}
public static void main(String [] args) throws IOException{
HtmlView<Task> taskView = taskDetailsView();
Task task = new Task("Special dinner", "Have dinner with someone!", Priority.Normal);
try(PrintStream out = new PrintStream(new FileOutputStream("Task.html"))){
taskView.setPrintStream(out).write(task);
Runtime.getRuntime().exec("explorer Task.html");
}
}
}
导入htmlflow.HtmlView;
进口模式。优先权;
导入模型任务;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入java.io.PrintStream;
公共类应用程序{
私有静态HtmlView taskDetailsView(){
HtmlView任务视图=新建HtmlView();
任务视图
.head()
.标题(“任务详细信息”)
.linkCss(“https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css");
任务视图
.body().classAttr(“容器”)
<html>
<head>
<title>Example</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
import htmlflow.HtmlView;
import model.Priority;
import model.Task;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
public class App {
private static HtmlView<Task> taskDetailsView(){
HtmlView<Task> taskView = new HtmlView<>();
taskView
.head()
.title("Task Details")
.linkCss("https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css");
taskView
.body().classAttr("container")
.heading(1, "Task Details")
.hr()
.div()
.text("Title: ").text(Task::getTitle)
.br()
.text("Description: ").text(Task::getDescription)
.br()
.text("Priority: ").text(Task::getPriority);
return taskView;
}
public static void main(String [] args) throws IOException{
HtmlView<Task> taskView = taskDetailsView();
Task task = new Task("Special dinner", "Have dinner with someone!", Priority.Normal);
try(PrintStream out = new PrintStream(new FileOutputStream("Task.html"))){
taskView.setPrintStream(out).write(task);
Runtime.getRuntime().exec("explorer Task.html");
}
}
}
String encoding = "UTF-8";
FileOutputStream fos = new FileOutputStream("myfile.html");
OutputStreamWriter writer = new OutputStreamWriter(fos, encoding);
StreamResult streamResult = new StreamResult(writer);
SAXTransformerFactory saxFactory =
(SAXTransformerFactory) TransformerFactory.newInstance();
TransformerHandler tHandler = saxFactory.newTransformerHandler();
tHandler.setResult(streamResult);
Transformer transformer = tHandler.getTransformer();
transformer.setOutputProperty(OutputKeys.METHOD, "html");
transformer.setOutputProperty(OutputKeys.ENCODING, encoding);
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
writer.write("<!DOCTYPE html>\n");
writer.flush();
tHandler.startDocument();
tHandler.startElement("", "", "html", new AttributesImpl());
tHandler.startElement("", "", "head", new AttributesImpl());
tHandler.startElement("", "", "title", new AttributesImpl());
tHandler.characters("Hello".toCharArray(), 0, 5);
tHandler.endElement("", "", "title");
tHandler.endElement("", "", "head");
tHandler.startElement("", "", "body", new AttributesImpl());
tHandler.startElement("", "", "p", new AttributesImpl());
tHandler.characters("5 > 3".toCharArray(), 0, 5); // note '>' character
tHandler.endElement("", "", "p");
tHandler.endElement("", "", "body");
tHandler.endElement("", "", "html");
tHandler.endDocument();
writer.close();