Pr。error(〃could not open 〃 + f);
}
return in;
}
static BufferedReader disOpen(String fname) {
return disOpen(new File(fname));
}
static DataOutputStream dosOpen(File f) {
DataOutputStream in = null;
try {
in = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream(f)));
} catch(IOException e) {
Pr。error(〃could not open 〃 + f);
}
return in;
}
static DataOutputStream dosOpen(String fname) {
return dosOpen(new File(fname));
}
static PrintWriter psOpen(File f) {
PrintWriter in = null;
try {
in = new PrintWriter(
new BufferedWriter(
new FileWriter(f)));
} catch(IOException e) {
Pr。error(〃could not open 〃 + f);
623
…………………………………………………………Page 625……………………………………………………………
}
return in;
}
static PrintWriter psOpen(String fname) {
return psOpen(new File(fname));
}
static void close(Writer os) {
try {
os。close();
} catch(IOException e) {
Pr。error(〃closing 〃 + os);
}
}
static void close(DataOutputStream os) {
try {
os。close();
} catch(IOException e) {
Pr。error(〃closing 〃 + os);
}
}
static void close(Reader os) {
try {
os。close();
} catch(IOException e) {
Pr。error(〃closing 〃 + os);
}
}
}
class SourceCodeFile {
public static final String
startMarker = 〃//:〃; // Start of source file
endMarker = 〃} ///:~〃; // End of source
endMarker2 = 〃}; ///:~〃; // C++ file end
beginContinue = 〃} ///:Continued〃;
endContinue = 〃///:Continuing〃;
packMarker = 〃###〃; // Packed file header tag
eol = // Line separator on current system
System。getProperty(〃line。separator〃);
filesep = // System"s file path separator
System。getProperty(〃file。separator〃);
public static String copyright = 〃〃;
static {
try {
BufferedReader cr =
new BufferedReader(
new FileReader(〃Copyright。txt〃));
String crin;
while((crin = cr。readLine()) != null)
copyright += crin + 〃n〃;
cr。close();
} catch(Exception e) {
624
…………………………………………………………Page 626……………………………………………………………
copyright = 〃〃;
}
}
private String filename; dirname;
contents = new String();
private static String chapter = 〃c02〃;
// The file name separator from the old system:
public static String oldsep;
public String toString() {
return dirname + filesep + filename;
}
// Constructor for parsing from document file:
public SourceCodeFile(String firstLine;
BufferedReader in) {
dirname = chapter;
// Skip past marker:
filename = firstLine。substring(
startMarker。length())。trim();
// Find space that terminates file name:
if(filename。indexOf(" ") != …1)
filename = filename。substring(
0; filename。indexOf(" "));
System。out。println(〃found: 〃 + filename);
contents = firstLine + eol;
if(copyright。length() != 0)
contents += copyright + eol;
String s;
boolean foundEndMarker = false;
try {
while((s = in。readLine()) != null) {
if(s。startsWith(startMarker))
Pr。error(〃No end of file marker for 〃 +
filename);
// For this program; no spaces before
// the 〃package〃 keyword are allowed
// in the input source code:
else if(s。startsWith(〃package〃)) {
// Extract package name:
String pdir = s。substring(
s。indexOf(" "))。trim();
pdir = pdir。substring(
0; pdir。indexOf(";"))。trim();
// Capture the chapter from the package
// ignoring the "" subdirectories:
if(!pdir。startsWith(〃〃)) {
int firstDot = pdir。indexOf("。");
if(firstDot != …1)
chapter =
pdir。substring(0;firstDot);
else
chapter = pdir;
}
625
…………………………………………………………Page 627……………………………………………………………
// Convert package name to path name:
pdir = pdir。replace(
"。"; filesep。charAt(0));
System。out。println(〃package 〃 + pdir);
dirname = pdir;
}
contents += s + eol;
// Move past continuations:
if(s。startsWith(beginContinue))
while((s = in。readLine()) != null)
if(s。startsWith(endContinue)) {
contents += s + eol;
break;
}
// Watch for end of code listing:
if(s。startsWith(endMarker) ||
s。startsWith(endMarker2)) {
foundEndMarker = true;
break;
}
}
if(!foundEndMarker)
Pr。error(
〃End marker not found before EOF〃);
System。out。println(〃Chapter: 〃 + chapter);
} catch(IOException e) {
Pr。error(〃Error reading line〃);
}
}
// For recovering from a packed file:
public SourceCodeFile(BufferedReader pFile) {
try {
String s = pFile。readLine();
if(s == null) return;
if(!s。startsWith(packMarker))
Pr。error(〃Can"t find 〃 + packM
小说推荐
- 软件工程实践者的思想(PDF格式)
- -Page 1-大 道 至 简—软件工程实践者的思想周爱民(Aimingoo 著-Page 2-序2004 年 11 月初爱民(Aimingoo)第一次把他的书稿给我,我翻看了一下,第一反应讲的是感想。这不错,在技
- 最新章:第26章
- 深入浅出MFC第2版(PDF格式)
- -Page 1-Page 2-山高月小山高月小 水落石出水落石出山高月小山高月小 水落石出水落石出-Page 3-深入淺出MFC(第版 使用Visual C 5.0 MFC 4.2)Dissecting MFC(Second Edition Using Visual C 5.0 MFC 4.2)侯俊
- 最新章:第309章
- VB2008从入门到精通(PDF格式英文版)
- -Page 1(R)The eXperT’s Voice inBeginningVB 2008From Novice to ProfessionalChristian Gross-Page 2-Page 3-Beginning VB 2008From Novice to Professional■C
- 最新章:第214章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 最新章:第4章
- JMS简明教程(PDF格式)
- -Page 1-JMS1.1规范中文版卫建军2007‐11‐22-Page 2
- 最新章:第28章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 最新章:第143章
- 神祗之眼 (正式版)第7卷(全文完)作者:百里芜虚
- 第五十一章离12月25日的圣诞节还有两天,纽约已经换上了节日的盛装,几天前的一场大雪令整个城市一片银白。人们笑逐颜开,都纷纷开始为节日做准备,商家为了在节日打开销路纷纷推出各种优惠促销手段,纽约的大街小巷全都这样热闹。依沙那被老婆打发出来买过节要用的杂货,而女儿则和凯妮一起到百货商场去买衣服去了。对
- 最新章:第23章
- SQL语言艺术(PDF格式)
- -Page 1-SQLSSQQLL语言艺术内容介绍本书分为12章,每一章包含许多原则或准则,并通过举例的方式对原则进行解释说明。这些例子大多来自于实际案例,对九种SQL经典查询场景以及其性能影响讨论,非常便于实践,为你数据库应用维护人员阅读。资深 SQL 专家 Stéphane Faroult倾力打
- 最新章:第27章
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 最新章:第31章