Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用JAVA生成输出_Java_Html - Fatal编程技术网

用JAVA生成输出

用JAVA生成输出,java,html,Java,Html,我们可以用java生成一个.html文档吗?通常我们在运行java程序时会得到输出。我想以.html或.doc格式生成输出,这是java中的一种方法吗 用于HTML 只需使用原始文件io操作将数据写入.html文件(它们只是扩展名为.html的文本文件) 例如: StringBuilder sb=新建StringBuilder(); 某人加上(“”); 某人加上(“”); sb.附加(“页面标题”); 某人加上(“”); 某人加上(“”); 某人附加(“你好世界”); 某人加上(“”); 某人加

我们可以用java生成一个.html文档吗?通常我们在运行java程序时会得到输出。我想以.html或.doc格式生成输出,这是java中的一种方法吗

用于HTML

只需使用原始文件io操作将数据写入.html文件(它们只是扩展名为.html的文本文件)

例如:

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();