数据结构与算法练习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
- 数据结构与算法练习Java版练习1.4
- 数据结构与算法练习Java版练习1.9和1.10
- 数据结构与算法练习
- 数据结构与算法练习
- 数据结构与算法练习(Java实现)
- 数据结构与算法分析Java版练习1.3
- 数据结构与算法分析Java版练习1.5
- 数据结构与算法分析Java版练习1.6
- 数据结构与算法分析Java版练习1.7
- 数据结构与算法分析Java版练习1.8
- 数据结构与算法分析Java版练习1.11和1.12
- 数据结构与算法分析Java版练习1.13
- 数据结构与算法分析Java版练习1.14
- 数据结构与算法分析Java版练习1.15
- 数据结构与算法分析Java版练习2.1和2.2
- 数据结构与算法分析Java版练习2.8
- 数据结构与算法练习-递归
- 数据结构与算法练习-排序
- Android的来由
- 网络处理2-异步POST请求和同步请求
- ARM调用规范
- android搭建环境错误 daemon not running. starting it now on port 5037 ADB server didn't ACK
- Windows Server 2012,无法使用Windows Photo Viewer的解决方案
- 数据结构与算法练习Java版练习1.4
- NSIS DerectUI 皮肤插件 免费使用!!支持异性,动画!!
- Android Fragment——管理Fragment
- Rabbitmq学习整理1
- chrome使用技巧
- CentOS下使用VIM打造C/C++开发环境
- leetcode 235 Lowest Common Ancestor of a Binary Search Tree(难易度:Easy)
- iPad开发第一天
- 多线程编程1-NSThread