读取一个模版里面的信息,然后写成HTML文档。
虽然成功了,但是打开HTML文档的时候中文乱码了!
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;public class HTML { /**
 * 按照规范格式保存宠物信息到HTML文档。
 * 
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
Reader fr = null;
Writer fw = null;
StringBuilder sb = new StringBuilder();
// 1.读取模版文件内容给到SB
try {
fr = new FileReader("pet.template");
char[] ch = new char[1024];
while( fr.read(ch) != -1){
sb.append(ch);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (null != fr) {
fr.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 2.替换模版中的内容
String str = sb.toString();

str = str.replace("{name}", "欧欧");
str = str.replace("{type}", "狗狗");
str = str.replace("{master}", "李伟");
System.out.println(str);
// 3.输出替换后内容到HTML文档
try {
fw = new FileWriter("pet.html");
fw.write(str);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (null != fw) {
fw.close();
System.out.println("成功生成HTML文档!");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}}

解决方案 »

  1.   

    现在有两个问题:第一就是乱码的问题。
    第二:我在百度寻找答案的时候,发现更本没人用这几个类去读取写入,都是File,FileInputStream ,FileWriter ,BufferedWriter 。我想这几个类应该都是子类了,想知道他们具体做什么的!
      

  2.   

    需要研究下这个文件原始编码是什么。是否为UTF-8编码,如果不是,先用UtralEdit转下码。
      

  3.   

    我改成了UTF-8,还是有些字会乱码诶,能和我讲讲第二个问题吗?或者给个地址我看看!谢谢了。
      

  4.   

    凡是带 InputStream 或 OutputStream,都是以字节byte为基础进行操作的。凡是带 Reader 或 Writer,都是以字符char为基础操作的。 其它差别不大,主要看前面定语,比如:
    FileXXXOO,就是主要针对文件访问的;
    BufferedXXOO,就是提供了缓存能力(提升效率啥的);