(文中的代码源于链接:http://blog.csdn.net/inowcome/article/details/6047661,但自己运行时稍有问题,做了修改。)
代码功能:java读取txt文件的小应用,将txt文件里面的章节信息提取出来,生成一个动态链接的html文档。该代码源于网络,自己加以修改。给出核心的内容:
/*
* 用来将只放在一个文件中的小说切隔成
* 一个章节的html页面,其中每个页面还包括上一页,下一页,目录 的超链接
* 同时还生成一个目录文件contents.html
*====================
*注意源码的编码是:utf-8
*文件读取的来源文件的编码也需是utf-8
*===================
*这里的神墓的切隔的原理是:
*根据第一个章节的标题都包含:"章 "
*
*/
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class GeneraeHtml {
private ArrayList fileNames;
public GeneraeHtml()
{
fileNames=new ArrayList();
}
public void generateHtmlByFile(File file)throws Exception
{
generate(file);
generateContent();
}
//Create all chapters's html file
private void generate(File file)throws Exception
{
String encoding = "GBK";
boolean isFirstTitle=true;
//Scanner sca=new Scanner(file);
Scanner sca = new Scanner(new InputStreamReader(
new FileInputStream(new File("e:/novel.txt")), encoding));
String currentContent="";
String currentLineStr="";
String currentPageFileName="";
String nextPageFileName="";
int currentPageIndex=-1;
//sca.useDelimiter("/n");
//while(sca.hasNext())
while(sca.hasNextLine())
{
currentLineStr=sca.nextLine();
System.out.println(currentLineStr);
if(currentLineStr.indexOf("章 ")!=-1)
{
if(!isFirstTitle)
{
System.out.println("Current output title:"+currentPageFileName);
nextPageFileName=(currentPageIndex+1)+currentLineStr.trim()+".html";
fileNames.add(nextPageFileName);
writeContent(currentContent,currentPageFileName,currentPageIndex);
currentPageFileName=nextPageFileName;
currentContent="";
}
else
{
currentPageFileName=(currentPageIndex+1)+currentLineStr.trim()+".html";
fileNames.add(currentPageFileName);
isFirstTitle=false;
}
currentPageIndex++;
}
currentContent+=currentLineStr+"";
}
System.out.println(currentPageIndex);
sca.close();
}
//It will write the current chapter into a html file
private void writeContent(String bodyContent,String currentFileName,int currentPageIndex)throws Exception
{
int previousPageIndex=0;
int nextPageIndex=currentPageIndex+1;
if(currentPageIndex!=0)
{
previousPageIndex=currentPageIndex-1;
}
String pageContent="/n
/n"+"/n"
+"/n
/n"+bodyContent
+""
+"
+"
"+"
上一页"+"
目录"+"
下一页"+"
"+"
"+"/n";
String filePath="神墓/"+currentFileName;
PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter(filePath)));
out.print(pageContent);
out.flush();
out.close();
}
//Create a html file contain chapter's reference.
private void generateContent()throws Exception
{
String pageContent="/n
/n"+"/n"
+"/n
/n"+"
+"
";for(int i=0;i
{
String item=fileNames.get(i);
pageContent+="
"+item+"";if((i+1)%3==0)
{
pageContent+="
/n";}
}
pageContent+="
/n/n";PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter("神墓/contents.html")));
out.print(pageContent);
out.flush();
out.close();
}
public static void main(String[] args) {
GeneraeHtml generaeHtml=new GeneraeHtml();
try
{
File file=new File("E:/novel.txt");
generaeHtml.generateHtmlByFile(file);
}catch(Exception e)
{
e.printStackTrace();
}
}
}