本人在前几天做了一道题如下(在116行中用(int)cki.KeyChar==26解决了C#中在控制台捕捉Ctrl+Z):
解决的方法也是请教了老师,经老师调试过才得出的解决方法.( 因在ConsoleKey的枚举中无Ctrl此键)
总结的心得是,单步调试方法确实是有效解决问题的路径.
解决的方法也是请教了老师,经老师调试过才得出的解决方法.( 因在ConsoleKey的枚举中无Ctrl此键)
总结的心得是,单步调试方法确实是有效解决问题的路径.
1
using
System;
2
using
System.Collections.Generic;
3
using
System.Text;
4
5
namespace
用CSharp实现DOS命令Copy_con
6
{
7
//24、编写一个程序,模拟DOS系统中的COPY CON命令功能。
8
/**//*copy是复制命令,不多解释。
9
con 是dos 设备文件的简称。 在dos中把很多外部设备作为文件,称为设备文件。
10
dos中这样规定的:con 控制台(键盘/显示器) aux (或com1)第一个串口 lpt1 第一个并行打印机接口,
11
nul 不存在的设备
12
所以,举例说明:
13
copy con abc.txt
14
这条命令的意思就是从键盘中把输入的文字复制到文件abc.txt中去,所以输入命令后,在输入字符,结束时按下
15
ctrl+z.你输入的文字就会保存到abc.txt这个文件里了。
16
而如果你输入的是
17
copy abc.txt con
18
计算机则会把abc.txt中的文字复制到屏幕上,也就是显示出来
19
*/
20
class DOSCopyCon
21
{
22
private string inputCommandtext="";
23
24
private string sourceFilename="";
25
26
private string targetFilename="";
27
//有参构造函数实现,实例化对象的同时赋值命令字符串
28
public DOSCopyCon(string inputCommandText)
29
{
30
this.inputCommandtext = inputCommandText;
31
}
32
//读写属性InputCommandText实现输入或读取命令字符串
33
public string InputCommandText
34
{
35
get
36
{
37
return inputCommandtext;
38
}
39
set
40
{
41
if (value != "")
42
{
43
this.inputCommandtext = value;
44
}
45
}
46
}
47
//只读属性SourceFileName
48
public string SourceFileName
49
{
50
get
51
{
52
return sourceFilename;
53
}
54
}
55
//只读属性TargetFileName
56
public string TargetFileName
57
{
58
get
59
{
60
return targetFilename;
61
}
62
}
63
//有参执行copy con命令方法
64
public void ExecuteCopyConCommand(string inputCommandText)
65
{
66
if (inputCommandText != "")
67
{
68
this.inputCommandtext = inputCommandText;
69
//开始实现Copy命令
70
DoneCopyCon();
71
}
72
else
73
{
74
Console.WriteLine("**Copy命令不能为空**");
75
return;
76
}
77
}
78
//无参执行copy con 方法
79
public void ExecuteCopyConCommand()
80
{
81
if (inputCommandtext == "")
82
{
83
Console.WriteLine("**Copy命令不能为空**");
84
return;
85
}
86
//开始实现Copy命令
87
DoneCopyCon();
88
}
89
90
//实现Copy命令的方法
91
private void DoneCopyCon()
92
{
93
//ConsoleKeyInfo ckis=new ConsoleKeyInfo(Convert.ToChar("\0x001A"),ConsoleKey.Z,false,true,false);
94
ConsoleKeyInfo cki = new ConsoleKeyInfo();
95
96
String[] strs = inputCommandtext.Split(new char[]
{ ' ' });
97
string inputFileText = "";
98
99
if (strs.Length > 3 || strs[0] != "copy")//输入命令字符串不合法
100
{
101
Console.WriteLine("您输入的copy命令不正确!!");
102
return;
103
}
104
105
else
106
{
107
if (strs[1] == "con") //从控制台中接收字符串写入文件中
108
{
109
//********????????????????????????????????????????????????????????????????????***********
110
//因ConsoleKey枚举中没有Ctrl键的值,但注意可用单步调试的方法来,查看在控制台中输入Ctrl+Z的值是多少
111
//在单步调试的调试状态下,输入Ctrl+Z得知cki.KeyChar的值是26,于是我们可以利用这一值来进行转换比较即可
112
Console.WriteLine("开始往文件{0}写入字符串(按Ctrl+Z或End结束并写入):",strs[2]);
113
while (true)
114
{
115
cki = Console.ReadKey();
116
if (cki.Key == ConsoleKey.End||(int)cki.KeyChar==26) //只实现了按End建就结束并写入文件
117
{ //但Ctrl+Z还没实现
118
break;
119
}
120
inputFileText += cki.KeyChar.ToString();
121
}
122
System.IO.StreamWriter sw = new System.IO.StreamWriter(strs[2]);
123
sw.Write(inputFileText);
124
sw.Close();
125
Console.WriteLine("写入文件{0}成功.", strs[2]);
126
return;
127
}
128
//********????????????????????????????????????????????????????????????????***********
129
else
130
{
131
if (strs[2] == "con") //若是读文件命令
132
{
133
Console.WriteLine("开始读取文件{0}
",strs[1]);
134
Console.WriteLine("读取文件成功,此文件内容如下:");
135
System.IO.StreamReader sr = new System.IO.StreamReader(strs[1]);
136
Console.WriteLine(sr.ReadToEnd());
137
Console.WriteLine("读取文件已完成.");
138
sr.Close();
139
return;
140
}
141
//以下操作为复制文件时用到
142
//else //开始复制操作
143
//{
144
// this.sourceFilename = strs[1];
145
// this.targetFilename = strs[2];
146
147
// if (strs[1] == strs[2]) //若同名复制就不管了
148
// {
149
// Console.WriteLine("同名复制!!");
150
// return;
151
// }
152
// else //开始复制异名文件
153
// {
154
// if (System.IO.File.Exists(strs[2])) //目标文件存在就删除
155
// {
156
// Console.Write(string.Format("您要改写文件{0}吗?(Yes/NO/All):", strs[2]));
157
// string dialogResultStr = Console.ReadLine();
158
// if
159
// System.IO.File.Delete(strs[2]);
160
// }
161
// System.IO.File.Copy(strs[1], strs[2]);//开始复制文件
162
// Console.WriteLine("复制源文件{0}到目标文件{1}成功!",strs[1], strs[2]);
163
// }
164
//}
165
}
166
}
167
}
168
}
169
}
170
转载地址:
http://www.cnblogs.com/ArisHuang/archive/2008/06/10/1217044.html

2

3

4

5

6



7

8


9

10

11

12

13

14

15

16

17

18

19

20

21



22

23

24

25

26

27

28

29



30

31

32

33

34



35

36



37

38

39

40



41

42



43

44

45

46

47

48

49



50

51



52

53

54

55

56

57



58

59



60

61

62

63

64

65



66

67



68

69

70

71

72

73



74

75

76

77

78

79

80



81

82



83

84

85

86

87

88

89

90

91

92



93

94

95

96



97

98

99

100



101

102

103

104

105

106



107

108



109

110

111

112

113

114



115

116

117



118

119

120

121

122

123

124

125

126

127

128

129

130



131

132



133


134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170
