数据结构与算法练习Java版练习1.4

来源:互联网 发布:mysql cast 编辑:程序博客网 时间:2024/06/05 17:42
package ch01;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.util.HashSet;import java.util.Set;/** * C允许拥有形如 * #include filename * 的语句,它将filename读入并将其插入到include语句处。include语句可以嵌套:换句话说,文件 * filename本身还可以包含include语句,但是显然一个文件在任何链接中都不能包含它自己。编写一个 * 程序,使它读入被一些include语句修饰的文件并且输出这个文件。 */public class EX04 {private static String readFile(String filename) {filename = filename.trim();if (readFiles.contains(filename)) {//循环include,则直接返回return "######Error to read " + filename +"\n"; }BufferedReader reader = null;try {readFiles.add(filename);reader = new BufferedReader(new FileReader(filename));String line;StringBuilder sb = new StringBuilder();while ((line = reader.readLine()) != null) {int includeIndex = line.indexOf(INCLUDE);if (includeIndex >= 0) {String file = line.substring(includeIndex + INCLUDE.length());line = readFile(file);sb.append(line);} else {sb.append(line + "\n");}}readFiles.remove(filename);return sb.toString();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if (reader != null) {try {reader.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}return null;}private static Set<String> readFiles = new HashSet<String>();private static final String INCLUDE = "#include";public static void main(String[] args) {/** * 文件内容如下:    -----------------    a.txt    A#include b.txt#include c.txt#include d.txt----------------b.txtB B----------------c.txtC C C----------------d.txtD D D D#include b.txt#include c.txt---------------e.txtE E E E E#include d.txt#include e.txt */String filename = "a.txt";System.out.println("Read a.txt---->");String content = readFile(filename);System.out.println(content);filename = "d.txt";System.out.println("Read d.txt---->");content = readFile(filename);System.out.println(content);filename = "e.txt";System.out.println("Read d.txt---->");content = readFile(filename);System.out.println(content);}}

输出为:

Read a.txt---->
A
B B
C C C
D D D D
B B
C C C


Read d.txt---->
D D D D
B B
C C C


Read d.txt---->
E E E E E
D D D D
B B
C C C
######Error to read e.txt


1 0
原创粉丝点击