ubuntu下用java代码调用命令将java格式文件转换为html格式文件

首先我们应该在电脑上装上GNU Source-highlight 3.1.7,给个链接参考:

http://www.gnu.org/software/src-highlite/#mozTocId120994

下面代码实现了 将java类型的代码转换为html文件类型的代码,如果java代码的文件名为 helloword.java,则转换为html格式的文件名为helloword.java.html,将java代码在浏览器上显示出来。其次我还将html文件中的内容提取出来,便于在html文件里编写便于网页展示java代码。

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.File;
import java.io.*;

public class ChangeFileType {

	public static void main(String[] args) {
		change ch = new change();

		String filename = "ChangeFileType.java";

		File file = new File(filename);

		if (!file.exists()) {
			System.err.println("create file fail!");
		}

		// File tempFile;
		// tempFile = ch.changeFile( file ); // 得到HTML文件
		String result = ch.changeFile(file); // 得到HTML文件返回的字符串
		System.out.println(result);
	}
}

class change {

	public String changeFile(File beginFile) {

		String fileName = beginFile.getName();
		String cmd = "source-highlight ChangeFileType.java";
		Runtime run = Runtime.getRuntime(); // 返回与当前 Java 应用程序相关的运行时对象
		try {
			Process pro = run.exec(cmd); // 启动另一个进程来执行命令
			BufferedInputStream in = new BufferedInputStream(
					pro.getInputStream());
			BufferedReader inBr = new BufferedReader(new InputStreamReader(in));
			String lineStr;
			while ((lineStr = inBr.readLine()) != null)
				// 获得命令执行后在控制台的输出信息
				System.out.println(lineStr);// 打印输出信息
			// 检查命令是否执行失败。
			if (pro.waitFor() != 0) {
				if (pro.exitValue() == 1)// pro.exitValue()==0表示正常结束,1:非正常结束
					System.err.println("Executive Command Fail!");
			}
			inBr.close();
			in.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

		fileName = fileName + ".html";
		File endFile = new File(fileName);

		String result = changeToString(endFile);

		return result; // 返回转换后的的字符串

		// return endFile; // 返回转换后的HTML文件
	}

	public String changeToString(File file) {

		InputStreamReader reader = null;
		StringWriter writer = new StringWriter();
		try {
			reader = new InputStreamReader(new FileInputStream(file), "UTF-8");

			// 将输入流写入输出流
			char[] buffer = new char[1024];
			int n = 0;
			while (-1 != (n = reader.read(buffer))) {
				writer.write(buffer, 0, n);
			}
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		} finally {
			if (reader != null)
				try {
					reader.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
		}
		// 返回转换结果
		if (writer != null) {
			return writer.toString();
		} else {
			return null;
		}

	}
}

生成html文件如下

页面展示:

注:

如出现

java.io.UnsupportedEncodingException:错误;

at sun.nio.cs.StreamDecoder.forInputStreamReader(StreamDecoder.java:71)

at java.io.InputStreamReader.<init>(InputStreamReader.java:100)

at change.changeToString(ChangeFileType.java:67)

at change.changeFile(ChangeFileType.java:54)

at ChangeFileType.main(ChangeFileType.java:21)

是支持的编码问题

解决: reader = new InputStreamReader(new FileInputStream(file), "UTF-8");

找到合适的编码

ubuntu下用java代码调用命令将java格式文件转换为html格式文件

时间: 2024-12-25 10:56:43

ubuntu下用java代码调用命令将java格式文件转换为html格式文件的相关文章

使用java代码调用exe程序 (包括参数传递)

使用Java代码调用exe 1使用场景 我现在使用eclipse+tomcat的架构建立了web server, 在这个web project中我需要建立一个定时任务,在定时任务中执行本地的一个C#工程生成的exe. 2Java代码 public class MyTask extends TimerTask { public void run() { System.out.println("call at " + (new Date())); // TODO æ­¤å¤?æ·»å? å

Ubuntu下VSFTPD(六)(常见FTP命令及其功能) (

常见FTP命令及其功能  FTP 命令 功能  FTP 命令 功能  ls 显示服务器上的目录 ls [remote-dir][local-file] 显示远程目录remote-dir,并存入本地文件local-file get remote-file [local-file] 从服务器下载指定文件到客户端 mget remote-files 下载多个远程文件(mget命令允许用通配符下载多个文件) put local-file [remote-file] 从客户端上传指定文件到服务器 mput

ubuntu 下 eclipse CDT代码提示框背景颜色修改

原生态的ubuntu下eclipse 代码提示框的背景颜色是黑背景,前景颜色是白的,所以看起来特别不舒服,很难辨别的清楚,所以查询了资料想修改成Windows下的样子.通过查资料所知,通过修改eclipse里面的设置是不成功的,必须得修改Ubuntu的主题来解决这个问题. 原生态的代码提示框的颜色为: 由此可以知道,这是很难看的,经过调整下,颜色背景为: 修改步骤为: 1,打开/usr/share/themes/Ambiance/gtk-2.0/gtkrc 此步骤必须要该文件的读写权限,可以通过

Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件

本文通过Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件,代码如下: import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.util.HashMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import

ubuntu下运行完整的JXTASHELL命令

概述: 在上篇文章<构建ubuntu下JXTA-C的开发环境>中我们在ubuntu下用JXTA-C源码编译出了JXTASHELL,但是JXTASHELL的命令支持不全. 这次我们构建一个完整的JXTASHELL的开发环境(附上JXTASHELL的源码及DOC文档) 1.下载jxse-shell-2.5源码包 附上我共享的资源的下载地址(http://download.csdn.net/detail/leekwen/7373783) 下载后,这个RAR中包含了三部分: 1).jxse-shell

ubuntu下使用自带的openJDK查看java源代码

如题 Ubuntu自带的OpenJDK只有jre环境,不提供源码,所以我们还是需要去下载. JDK6:http://download.java.net/openjdk/jdk6/ JDK7:http://download.java.net/openjdk/jdk7/ 下载好了后,只需要解压下载包下的一个子目录:/jdk/src/share/classes/,解压的路径记好了,如:/home/simon/Develop/openjdk-src,然后打开Eclipse,选中 windows--pre

java代码调用数据库存储过程

由于前边有写java代码调用数据库,感觉应该把java调用存储过程也写一下,所以笔者补充该篇! package testSpring; import java.sql.CallableStatement;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet; import oracle.jdbc.OracleCalla

JAVA代码在命令行下的编译

p { text-indent: 2em } .main { font-weight: bolder } 目的 跟C++一样,JAVA可以通过命令行直接编译得到字节码文件,并且使用java命令运行.通过JAVA的编译和运行命令只是熟悉一下JAVA的一些特征,包括包和目录,classpath,jar格式:而且在调试小程序的时候其实用命令行是足够的. 但是在进行大型项目的时候还是要用较大的IDE,例如eclipse和NetBeans,显然eclipse是比NetBeans要复杂得多的,这里不说. 主

02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译

?? 1  编写以下案例(下面的三个按钮都调用了底层的C语言): 项目案例的代码结构如下: 2 编写DataProvider的代码: package com.example.ndkpassdata; public class DataProvider { /** * 计算x和y的加法  apktools * * @param x * @param y * @return */ public native int add(int x,int y); /** * 给字符串后面拼接字符串   加密运算