filename

package com.enjoyor.soa.traffic.server.tms.controller;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;

public class FileNameTest {

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 block
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.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.txt
B B
----------------
c.txt
C C C
----------------
d.txt
D D D D
#include b.txt
#include c.txt
---------------
e.txt
E E E E E
#include d.txt
#include e.txt
*/
String filename = "C:/Users/xujianjun/Desktop/a.txt";
System.out.println("Read a.txt---->");
String content = readFile(filename);
System.out.println(content);

filename = "C:/Users/xujianjun/Desktop/d.txt";
System.out.println("Read d.txt---->");
content = readFile(filename);
System.out.println(content);

filename = "C:/Users/xujianjun/Desktop/e.txt";
System.out.println("Read d.txt---->");
content = readFile(filename);
System.out.println(content);
}
}

时间: 2024-08-30 02:24:29

filename的相关文章

awk: (FILENAME=- FNR=1) 致命错误: 试图访问字段 -2

执行:awk '{print $(NF-2)}' aa.log 出现错误:awk: (FILENAME=aa.log FNR=1) 致命错误: 试图访问字段 -2 可能和aa.log中数据有关系: 改为: awk 'NF>1{print $(NF-2)}' aa.log

CreateProcess error=206, The filename or extension is too long&quot;的一个解决方案

在实际项目中我使用antrun 和 closure-compiler压缩JS项目.然后我就使用如下代码: 首先加入依赖. <dependency> <groupId>com.google.javascript</groupId> <artifactId>closure-compiler</artifactId> <version>v20160315</version> </dependency> pom.xml

os模块 os.stat(&#39;path/filename&#39;) os.path.dirname(path) os.path.exists(path)&#160; os.path.join(path1[, path2[, ...]])

提供对操作系统进行调用的接口 1 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 2 os.chdir("dirname")  改变当前脚本工作目录:相当于shell下cd 3 os.curdir  返回当前目录: ('.') 4 os.pardir  获取当前目录的父目录字符串名:('..') 5 os.makedirs('dirname1/dirname2')    可生成多层递归目录 6 os.removedirs('dirname1')    若

文件下载:&quot;Content-disposition&quot;,&quot;attachment; filename=中文名&gt;&gt;&gt;解决方案

摘录自:http://blog.csdn.net/wangzhi_821/article/details/5047777 文件下载时常会出现如下问题: response.setHeader("Content-disposition","attachment; filename="+as+"");如果as直接写中文名字时,就会直接在IE页面打开Excel文件(弹出后点打开会在IE页面打开,注意此时的“你想打开或保存此文件吗?”,名称会显示一个类似C

System.load(String filename)和System.loadLibrary(String libname)的区别

前言 之前一篇文章在写Native方法的时候,第一个步骤里面有这么一段代码 static { System.load("D:" + File.separator + "Hello.dll"); } 其实JDK提供给用户了两个方法用于载入文件,一个是System.load(String filename)方法,另外一个是System.load(String libname)方法,本文主要写一下这两个方法之间的区别. 区别 1.加载的路径不同 System.load(S

织梦多语言站点,{dede:include filename=&#39;&#39;/}引入问题

织梦模板include插入非模板目录文件出现"无法在这个位置找到"错误的解决办法 以下是dede V55_UTF8 查dede include标签手册 (3) include 引入一个文件,形式为:{dede:include file='文件名称' ismake='是否为dede板块模板(yes/no)'/}对文件的搜索路径为顺序为:绝对路径.include文件夹,CMS安装目录,CMS主模板目录 其实根本不是这个样子的,如果你要引用一个其它目录的东西如:{dede:include f

Python标准库:内置函数compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)

这个函数用来编译一段字符串的源码,结果可以生成字节码或者AST(抽像语法树),字节码可以使用函数exec()来执行,而AST可以使用eval()来继续编译. 参数source是一串字符串的源码,或者是AST对象数组. 参数filename是读取字符串的文件对象,如果不是从文件里读取源码来编译,那么这里可以放一些用来标识这些代码的字符串. 参数mode是用来指明那种表示的源码类型:如果是exec类型,表示这是一个序列语句,可以进行运行:如果是eval类型,表示这是一个单一的表达式语句,可以用来计算

this.getClass().getClassLoader().getResourceAsStream(fileName)中的路径问题。(引用)

ClassLoader.readResourceAsStream 是从 classpath 中读取,也就是说目标资料必须在某个 classpath 节点路径中,比如在某个磁盘文件夹 bin 中或某个 jar 文件里面.放在 src 里面的话,eclipse 会自动在编译时默认地复制到 bin 目录下,当然你可以故意禁用这个默认功能(参数页中 Java > Compiler > Building 里面有个 Filtered Resources).eclipse 默认配置下你放在 src 下面就可

SVN chechout 错误: xxx is not valid as filename in directory

用svn checkout的时候碰到"xxx is not valid as filename in directory"错误,导致checkout中断,后面的其他文件也都无法checkout. 百度搜索:"svn is not valid as filename in directory",完全没有有用的信息!!! 翻墙google搜索,马上很多解决方案,比如:http://stackoverflow.com/questions/18452218/how-can-

FR报表 FileName

在设计或者打印预览时,如果设置了FileName,可能反而出错. procedure TfrxReport.ShowPreparedReport; var WndExStyles: Integer; begin FPreviewForm := nil; if FPreview <> nil then begin FPreview.Init(Self, FPreviewPages); //进入 // FPreview.FReport := Self; // FPreview.FPreviewPa