编写程序文件d|题目:编写程序在D:\创建文件alphabettxt并向该文件中写入大写字母A~Z 用java怎么编写

|

『壹』 java程序编写,从文件d:/java\data.txt中读取数据,将其保存在d:\java\d

importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;publicclassTestRead{publicstaticvoidmain(String[]args){try{FileInputStreamfis=newFileInputStream("D:/java/data.txt");FileOutputStreamfos=newFileOutputStream("D:/java/st.txt");intb=0;while((b=fis.read())!=-1){fos.write(b);}}catch(FileNotFoundExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}}

『贰』 如何编写高质量的VB代码运行程序文件

1. 使用整数(Integer)和长整数(Long)提高代码运行速度最简单的方法莫过于使用正确的数据类型了。也许你不相信,但是正确地选择数据类型可以大幅度提升代码的性能。在大多数情况下,程序员可以将Single,Double和Currency类型的变量替换为Integer或Long类型的变量,因为VB处理Integer和Long的能力远远高于处理其它几种数据类型。在大多数情况下,程序员选择使用Single或Double的原因是因为它们能够保存小数。但是小数也可以保存在Integer类型的变量中。例如程序中约定有三位小数,那么只需要将保存在Integer变量中的数值除以1000就可以得到结果。根据我的经验,使用Integer和Long替代Single,Double和Currency后,代码的运行速度可以提高将近10倍。2. 避免使用变体对于一个VB程序员来说,这是再明显不过的事情了。变体类型的变量需要16个字节的空间来保存数据,而一个整数(Integer)只需要2个字节。通常使用变体类型的目的是为了减少设计的工4作量和代码量,也有的程序员图个省事而使用它。但是如果一个软件经过了严格设计和按照规范编码的话,完全可以避免使用变体类型。在这里顺带提一句,对于Object对象也存在同样的问题。请看下面的代码:Dim FSOSet FSO = New Scripting.FileSystemObject或Dim FSO as objectSet FSO = New Scripting.FileSystemObject上面的代码由于在申明的时候没有指定数据类型,在赋值时将浪费内存和CPU时间。正确的代码应该象下面这样:Dim FSO as New FileSystemObject3. 尽量避免使用属性在平时的代码中,最常见的比较低效的代码就是在可以使用变量的情况下,反复使用属性(Property),尤其是在循环中。要知道存取变量的速度是存取属性的速度的20倍左右。下面这段代码是很多程序员在程序中会使用到的:Dim intCon as IntegerFor intCon = 0 to Ubound(SomVar())Text1.Text = Text1.Text & vbcrlf & SomeVar(intCon)Next intCon下面这段代码的执行速度是上面代码的20倍。Dim intCon as IntegerDim sOutput as StringFor intCon = 0 to Ubound(SomeVar())sOutput = sOutput & vbCrlf &SomeVar(intCon)NextText1.Text = sOutput4. 尽量使用数组,避免使用集合除非你必须使用集合(Collection),否则你应该尽量使用数组。据测试,数组的存取速度可以达到集合的100倍。这个数字听起来有点骇人听闻,但是如果你考虑到集合是一个对象,你就会明白为什么差异会这么大。5. 展开小的循环体在编码的时候,有可能遇到这种情况:一个循环体只会循环2到3次,而且循环体由几行代码组成。在这种情况下,你可以把循环展开。原因是循环会占用额外的CPU时间。但是如果循环比较复杂,你就没有必要这样做了。6. 避免使用很短的函数和使用小的循环体相同,调用只有几行代码的函数也是不经济的–调用函数所花费的时间或许比执行函数中的代码需要更长的时间。在这种情况下,你可以把函数中的代码拷贝到原来调用函数的地方。7. 减少对子对象的引用在VB中,通过使用.来实现对象的引用。例如:Form1.Text1.Text在上面的例子中,程序引用了两个对象:Form1和Text1。利用这种方法引用效率很低。但遗憾的是,没有办法可以避免它。程序员唯一可以做就是使用With或者将用另一个对象保存子对象(Text1)。注释: 使用WithWith frmMain.Text1.Text = "Learn VB".Alignment = 0.Tag = "Its my life".BackColor = vbBlack.ForeColor = vbWhiteEnd With或者注释: 使用另一个对象保存子对象Dim txtTextBox as TextBoxSet txtTextBox = frmMain.Text1TxtTextBox.Text = "Learn VB"TxtTextBox.Alignment = 0TxtTextBox.Tag = "Its my life"TxtTextBox.BackColor = vbBlackTxtTextBox.ForeColor = vbWhite 注意,上面提到的方法只适用于需要对一个对象的子对象进行操作的时候,下面这段代码是不正确的:With Text1.Text = "Learn VB".Alignment = 0.Tag = "Its my life".BackColor = vbBlack.ForeColor = vbWhiteEnd With很不幸的是,我们常常可以在实际的代码中发现类似于上面的代码。这样做只会使代码的执行速度更慢。原因是With块编译后会形成一个分枝,会增加了额外的处理工作。8. 检查字符串是否为空大多数程序员在检查字符串是否为空时会使用下面的方法:If Text1.Text = "" then注释: 执行操作End if很不幸,进行字符串比较需要的处理量甚至比读取属性还要大。因此我建议大家使用下面的方法:If Len(Text1.Text) = 0 then注释: 执行操作End if9. 去除Next关键字后的变量名在Next关键字后加上变量名会导致代码的效率下降。我也不知道为什么会这样,只是一个经验而已。不过我想很少有程序员会这样画蛇添足,毕竟大多数程序员都是惜字如金的人。注释: 错误的代码For iCount = 1 to 10注释: 执行操作Next iCount注释: 正确的代码For iCount = 1 to 10注释: 执行操作Next10. 使用数组,而不是多个变量当你有多个保存类似数据的变量时,可以考虑将他们用一个数组代替。在VB中,数组是最高效的数据结构之一。11. 使用动态数组,而不是静态数组使用动态数组对代码的执行速度不会产生太大的影响,但是在某些情况下可以节约大量的资源。 12. 销毁对象无论编写的是什么软件,程序员都需要考虑在用户决定终止软件运行后释放软件占用的内存空间。但遗憾的是很多程序员对这一点好像并不是很在意。正确的做法是在退出程序前需要销毁程序中使用的对象。例如:Dim FSO as New FileSystemObject' 执行操作' 销毁对象Set FSO = Nothing对于窗体,可以进行卸载:Unload frmMain或Set frmMain = Nothing13. 变长和定长字符串从技术上来说,与变长字符串相比,定长字符串需要较少的处理时间和空间。但是定长字符串的缺点在于在很多情况下,你都需要调用Trim函数以去除字符串末的空字符,这样反而会降低代码效率。所以除非是字符串的长度不会变化,否则还是使用变长字符串。14. 使用类模块,而不是ActiveX控件除非ActiveX控件涉及到用户界面,否则尽量使用轻量的对象,例如类。这两者之间的效率有很大差异。15. 使用内部对象在涉及到使用ActiveX控件和DLL的时候,很多程序员喜欢将它们编译好,然后再加入工程中。我建议你最好不要这样做,因为从VB连接到一个外部对象需要耗费大量的CPU处理能力。每当你调用方法或存取属性的时候,都会浪费大量的系统资源。如果你有ActiveX控件或DLL的源代码,将它们作为工程的私有对象。16. 减少模块的数量有些人喜欢将通用的函数保存在模块中,对于这一点我表示赞同。但是在一个模块中只写上二三十行代码就有些可笑了。如果你不是非常需要模块,尽量不要使用它。这样做的原因是因为只有在模块中的函数或变量被调用时,VB才将模块加载到内存中;当VB应用程序退出时,才会从内存中卸载这些模块。如果代码中只有一个模块,VB就只会进行一次加载操作,这样代码的效率就得到了提高;反之如果代码中有多个模块,VB会进行多次加载操作,代码的效率会降低。17. 使用对象数组当设计用户界面时,对于同样类型的控件,程序员应该尽量使用对象数组。你可以做一个实验:在窗口上添加100个PictureBox,每个PictureBox都有不同的名称,运行程序。然后创建一个新的工程,同样在窗口上添加100个PictureBox,不过这一次使用对象数组,运行程序,你可以注意到两个程序加载时间上的差别。18. 使用Move方法在改变对象的位置时,有些程序员喜欢使用Width,Height,Top和Left属性。例如:Image1.Width = 100Image1.Height = 100Image1.Top = 0Image1.Left = 0实际上这样做效率很低,因为程序修改了四个属性,而且每次修改之后,窗口都会被重绘。正确的做法是使用Move方法:Image1.Move 0,0,100,10019. 减少图片的使用图片将占用大量内存,而且处理图片也需要占用很多CPU资源。在软件中,如果可能的话,可以考虑用背景色来替代图片–当然这只是从技术人员的角度出发看这个问题。20. 使用ActiveX DLL,而不是ActiveX控件如果你设计的ActiveX对象不涉及到用户界面,使用ActiveX DLL。编译优化我所见过的很多VB程序员从来没有使用过编译选项,也没有试图搞清楚各个选项之间的差别。下面让我们来看一下各个选项的具体含义。1. P-代码(伪代码)和本机代码你可以选择将软件编译为P-代码或是本机代码。缺省选项是本机代码。那什么是P-代码和本机代码呢?P-代码:当在VB中执行代码时,VB首先是将代码编译为P-代码,然后再解释执行编译好的P-代码。在编译环境下,使用这种代码要比本机代码快。选择P-代码后,编译时VB将伪代码放入一个EXE文件中。本机代码:本机代码是VB6以后才推出的选项。当编译为EXE文件后,本机代码的执行速度比P-代码快。选择本机代码后,编译时VB使用机器指令生成EXE文件。在使用本机代码进行编译时,我发现有时候会引入一些莫名其妙的错误。在编译环境中我的代码完全正确地被执行了,但是用本机代码选项生成的EXE文件却不能正确执行。通常这种情况是在卸载窗口或弹出打印窗口时发生的。我通过在代码中加入DoEvent语句解决了这个问题。当然出现这种情况的几率非常少,也许有些VB程序员从来没有遇到过,但是它的确存在。在本机代码中还有几个选项:a) 代码速度优化:该选项可以编译出速度较快的执行文件,但执行文件比较大。推荐使用b) 代码大小优化:该选项可以编译出比较小的执行文件,但是以牺牲速度为代价的,不推荐使用。c) 无优化:该选项只是将P-代码转化为本机代码,没有做任何优化。在调试代码时可以使用。d) 针对Pentium Pro优化:虽然该项不是本机代码中的缺省选项,但是我通常会使用该选项。该选项编译出的可执行程序在Pentium Pro和Pentium 2以上的机器上可以运行得更快,而在比较老的机器上要稍稍慢一些。考虑到现在用Pentium 2都是落伍,所以推荐大家使用该选项。e) 产生符号化调试信息:该项在编译过程中生成一些调试信息,使用户可以利用Visual C++一类的工具来调试编译好的代码。使用该选项会生成一个.pdf文件,该文件记录了可执行文件中的标志信息。当程序拥有API函数或DLL调用时,该选项还是比较有帮助的。2. 高级优化高级优化中的设置可以帮助你提高软件的速度,但是有时候也会引入一些错误,因此我建议大家尽量小心地使用它们。如果在代码中有比较大的循环体或者复杂的数学运算时,选中高级优化中的某些项会大幅度提升代码的性能。如果你使用了高级优化功能,我建议你严格测试编译好的文件。a) 假定无别名:可以提高循环体中代码的执行效率,但是在如果通过变量的引用改变变量值的情况下,例如调用一个方法,变量的引用作为方法的参数,在方法中改变了变量的值的话,就会引发错误。有可能只是返回的结果错误,也有可能是导致程序中断运行的严重错误。b) 取消数组绑定检查、取消整数溢出检查和取消浮点错误检查:在程序运行时,如果通过这些检查发现了错误,错误处理代码会处理这些错误。但是如果取消了这些检查,发生了错误程序就无法处理。只有当你确定你的代码中不会出现上面的这些错误时,你才可以使用这些选项。它们将使软件的性能得到很大的提升。c) 允许不舍入的浮点操作:选择该选项可以是编译出来的程序更快地处理浮点操作。它唯一的缺点就是在比较两个浮点数时可能会导致不正确的结果。d) 取消Pentium FDIV安全检查:该选项是针对一些老的Pentium芯片设置的,现在看来已经过时了。

『叁』 编一个程序,从文件“d:\test1.txt”上读入一行字符串

import java.io.*;public class Main{ //把字符串中的大写字母转化成小写字母 static String fun(String str){ char[] ch = str.toCharArray(); StringBuffer strb = new StringBuffer(); for(int i=0;i<ch.length;i++){ if(ch[i]>='A'&&ch[i]<='Z') strb.append((char)(ch[i]+32)); else strb.append(ch[i]); } return strb.toString(); } public static void main(String args[]) { try { BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("d:\\test.txt")));//读文件 String str = null; try { while((str = br.readLine())!=null){ PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("d:\\test2.txt")));//转化大写字母后写文件 pw.println(fun(str)); pw.flush(); } } catch (IOException e) { e.printStackTrace(); } } catch (FileNotFoundException e) { e.printStackTrace(); } } }

『肆』 用DOS怎么编写程序

在你的命令后加一个 /Y 禁止提示以确认覆盖一个现存目标文件。复制文件和目录树。注意: X 现已被否决,请使用 Robo。XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B] [/EXCLUDE:file1[+file2][+file3]…] source 指定要复制的文件。 destination 指定新文件的位置和/或名称。 /A 只复制有存档属性集的文件,但不改变属性。 /M 只复制有存档属性集的文件,并关闭存档属性。 /D:m-d-y 复制在指定日期或指定日期以后改变的文件。 如果没有提供日期,只复制那些源时间比目标时间新的文件。 /EXCLUDE:file1[+file2][+file3]… 指定含有字符串的文件列表。每个字符串在文件中应位于单独的一行。 如果任何字符串与复制文件的绝对路径的任何部分相符,则不会复制该文件。 例如,指定如 \obj\ 或 .obj 的字符串会排除目录 obj 下面的 所有文件或带有 .obj 扩展名的所有文件。 /P 创建每个目标文件前提示您。 /S 复制目录和子目录,不包括空目录。 /E 复制目录和子目录,包括空目录。与 /S /E 相同。可以用来修改 /T。 /V 验证每个新文件的大小。 /W 提示您在复制前按键。 /C 即使有错误,也继续复制。 /I 如果目标不存在,且要复制一个以上的文件,则假定目标必须是目录。 /Q 复制时不显示文件名。 /F 复制时显示完整的源文件名和目标文件名。 /L 显示要复制的文件。 /G 允许将加密文件复制到不支持加密的目标。 /H 也复制隐藏和系统文件。 /R 覆盖只读文件。 /T 创建目录结构,但不复制文件。不包括空目录或子目录。/T /E 包 括空的目录和子目录。 /U 只复制已经存在于目标中的文件。 /K 复制属性。一般的 X 会重设只读属性。 /N 用生成的短名复制。 /O 复制文件所有权和 ACL 信息。 /X 复制文件审核设置(隐含 /O)。 /Y 禁止提示以确认覆盖一个现存目标文件。 /-Y 要提示以确认覆盖一个现存目标文件。 /Z 在可重新启动模式下复制网络文件。 /B 复制符号链接本身和链接目标。开关 /Y 可以预先在 COPYCMD 环境变量中设置。这可能被命令行上的 /-Y 覆盖。

『伍』 在WIN7中怎样编写程序文件

之前我研究过这个问题,很多加密软件到了win7下就不能用了。我现在是这样加密文件夹的:在xp下加密(实际不是加密,就是cmd下创建文件名带点的文件夹),然后在win7下继续用。详细如下,供参考。原来在xp系统下建立一个加密文件夹1、运行cmd2、在cmd窗口中输入如下命令:mdd:\test..\(在d盘创建文件夹名为test.)d:\test.这个文件夹普通方式是无法打开的,不信自己可以试;3、在运行中输入命令:d:\test..\如此就可以创建一个无法通过鼠标点击打开的文件夹test.(后面有一个点)4、如果需要删除这个文件夹,请在cmd窗口中用命令:rdd:\test..\通过此方法大家可以在加密文件夹中存放一些重要文件或私密文件。换成windows7系统后无法打开点属性说是windows外壳公用dll,那么在windows7下该用什么方式来打开这个文件夹?(1)运行cmd;(2)在目标文件夹的目录中,运行dir/a/x命令,并按回车键,找到目标文件夹的短文件名。比如,之前在d盘下有加密文件夹test.可输入如下命令,敲回车后,会看到test.文件夹的短文件名为test~1或其它。(3)开始-运行加密文件夹的短文件名,例“d:\test~1”(4)打开目标加密文件夹,进行其它操作。

『陆』 如何编写脚本程序

系统的DOS命令有什么啊?? 悬赏分:0 – 解决时间:2005-12-1 13:25 系统的DOS命令有什么啊?? 只要是dos 命令就可以 包括装系统时的,命令 提问者: tzp9 – 童生 一级 最佳答案 DOS常用命令 美好的新DOS时代 DOS是世界上使用人数最多的操作系统。尽管许多人由于种种原因而使用了其它操作系统或操作环境,如Windows等,但是,由于DOS确实非常方便实用,操作起来效率非常高、简单快捷,而且功能也非常强大,从文件和磁盘操作到网络和多媒体操作等样样都能方便的做到,而且能做到许多在Windows等系统或环境下做不到或做不好的事情,所以它深受人们的喜爱。直到现在,它一直被人们广泛使用并得到不断的发展。那么,我们该如何使用它呢?而且怎样使用才能跟上时代的发展呢?下面介绍一些DOS的使用方法和技巧。建议大家阅读。 ——————————————————————————– DOS常用命令 要想操作使用DOS,知道一些常用命令是非常重要的。以下是一些命令的用法。 文件名是由文件路径和文件名称合起来的,如C:\DOS\COMMAND.COM。 DIR 显示文件和文件夹(目录)。 用法:DIR [文件名] [选项] 它有很多选项,如/A表示显示所有文件(即包括带隐含和系统属性的文件),/S表示也显示子文件夹中的文件,/P表示分屏显示,/B表示只显示文件名,等等。 如 DIR A*.EXE /A /P 此命令分屏显示当前文件夹下所有以A开头后缀为EXE的文件(夹)。 CD或CHDIR 改变当前文件夹。 用法:CD [文件夹名] 若无文件夹名则显示当前路径。 MD或MKDIR 建立文件夹。 用法:MD 文件夹名 RD或RMDIR 删除文件夹。 用法:RD 文件夹名 注意:此文件夹必须是空的。 DEL或ERASE 删除文件。 用法:DEL/ERASE 文件名 COPY 拷贝文件。 用法: COPY 文件名1 [文件名2] [选项] 如 COPY /B A+B C 此命令将两个二进制文件A和B合为一个文件C。 TYPE 显示文件内容。 用法:TYPE 文件名 REN或RENAME 改变文件名,在DOS7中还可以改变文件夹名。 用法:REN 文件(夹)名1 文件(夹)名2 EDIT 编辑文件,在DOS7中还可以编辑二进制文件。 用法:EDIT [文件名] [选项] 如 EDIT /70 C:\COMMAND.COM 此命令以二进制方式编辑C:\COMMAND.COM文件。 FORMAT 格式化磁盘。 用法:FORMAT 驱动器 [选项] 它的选项很多,如/Q是快速格式化,/U表示无条件格式化(即无法使用UNFORMAT等命令恢复),/V指定磁盘的卷标名,等等。它还有许多未公开参数。 MEM 显示内存状态。 用法:MEM [选项] 它的选项也有不少,如/C可列出所有程序的内存占用,/D是显示驻留内存的程序及设备驱动程序的状态等详细信息,/F显示空闲的内存总量,/M显示内存中的模块信息,/P则是分屏显示。还有隐藏的/A选项,可以显示HMA信息。 MOVE 移动文件或文件夹,还可以更改文件或文件夹的名称。 用法:MOVE 文件[夹]1 文件[夹]2 如 MOVE C:\*.EXE D: 此命令可以将C盘根文件夹下所有扩展名为EXE的文件移到D盘上。 XCOPY 复制文件或文件夹。 用法:XCOPY 文件[夹]名1 [文件[夹]名2] [选项] 它的选项非常多,如/S可拷贝整个文件夹(包括子文件夹)中的文件,/E指定包括空文件夹,/V表示复制完后检验复制出的文件的正确性,/Y表示确认,等等。 CLS 清除屏幕。 用法:CLS SYS 传导系统,即将系统文件(如IO.SYS等)从一处传输到指定的驱动器中。 用法:SYS 文件夹名 [驱动器] 如 SYS C:\DOS A: 此命令即可将位于C:\DOS文件夹下的系统文件传输到A盘中。 DATE 显示或设置日期。 用法:DATE [日期] TIME 显示或设置时间。 用法:TIME [时间] DOS还自带一些其它的命令,如SORT(排序),FIND(寻找字符)等。 除DOS自带的命令以外,还有很多其它的增强命令也非常实用,它们可以大大增强DOS的功能。这些软件中有很多可以在“DOS软件”中下载。 ——————————————————————————– DOS下的必备工具 DOS是个非常强大实用的操作系统,有着最多的用户。但是我们在安装了DOS以后,发现DOS自带的命令并不能完成大家所需的各方面的功能。这时,我们就需要一些其它的软件来实现那些功能。DOS下的实用软件是非常多的,那么,我们应该在其中选择哪些工具作为必备工具来使用呢?下面就来分类讨论一下。 当安装了操作系统后,首先要使整个电脑的硬件发挥出各自的功能,比如鼠标,光驱,声卡等等。这时就需要有相应的驱动程序,而这些驱动程序就是DOS下的必备工具。这些驱动程序可在本站的“DOS软件”中下载,而安装与设置方法请见本栏目的“DOS下硬件设备的使用与设置”。 将硬件都能正常工作了以后,就要让DOS来完成所需的功能了。DOS既是个方便实用的操作系统,又是一个基础操作系统,许多界面增强程序(如Windows 3.x/9x)都是建立在它的基础上实现的,即DOS是它们的内核。因此,在DOS下进行一些系统和磁盘的管理是十分合适的,例如复制磁盘,分区,格式化等等。这时,GHOST,FDISK,FORMAT及PQMAGIC等磁盘工具就可以大显身手了,可以当作是DOS下的必备工具。当然,其它的系统维护工具(如磁盘检查工具等)也非常重要,大家可在本栏目的“DOS系统的维护”中看到。 大家知道,为了节省空间,很多文件都是使用压缩的方法来存取的。因此,DOS下进行压缩和解压的工具是非常重要的。常用的压缩格式有ZIP,RAR及ARJ等,而能够建立和展开这些压缩格式的DOS工具分别是PK(UN)ZIP,(UN)RAR及(UN)ARJ。它们的操作都十分方便快捷,如PKUNZIP *.ZIP就可以将当前文件夹下所有的ZIP文件展开。RAR和ARJ格式也是一样,可以建立或展开相应的压缩文档。不过要注意,由于RAR近年来在3.0版本中采用了新的RAR压缩格式,所以许多新的RAR文件应用最新版本的RAR(即3.0版)来解压,可在本站的“压缩工具”中下载。至于以上PKZIP/PKUNZIP和RAR等工具的具体使用方法,可见本站“DOS文章”栏目中的“DOS下常用压缩和解压工具的使用”。除了压缩一般文件,还可以压缩可执行文件,即将可执行文件的体积变小。最好的可执行文件的压缩工具是UPX,功能非常强大,可以作为必备工具。 还有部分文件叫作映像文件,如IMG文件,它们中有很多是用HD-COPY产生的,当然还有其它的工具。解压这些文件最好的方法是用UNDISK(可在本站下载),它可以非常高效的将映像文件展开,可作为必备工具。最好不要用HD-COPY等工具来解压这些文件,因为此工具不仅旧,而且只能将文件展开到软盘上,非常不方便。刚才提到的UNDISK则要好用得多。 那么如果不知道一些文件是什么压缩格式的情况怎么办呢(尤其是当扩展名丢失的时候)?这时,可用DOS下的一个非常强大的工具GetType,它的最新版本是2.60,可在本站中下载。它可以非常详细的显示压缩/映像/加密文件中的信息,甚至可以将里面的内容全部显示出来,而不需其它任何软件。不仅如此,它还可以显示可执行文件(包括Windows文件)和其它文件中的信息,非常强大,而且支持长文件名。大家可以将它当作必备工具,因为一旦有了它,操作起来就方便多了。 大家知道,Windows的文件管理器操作起来非常直观,DOS下也有很多的这样的工具,可在本站的“文件管理”中找到。它们也都是以图形方式进行操作,通常除基本的文件管理功能以外,还能实现其它许多功能,如自带文件编辑器,可以查看压缩文件中的内容等,而且近年来DOS下的文件管理工具还增加了支持长文件名和FAT32的功能。这些工具中,比较实用的有Volkov Commander等,它们的界面都不错,功能也很强,大家可以将它们作为必备工具来使用。 使用DOS自然会经常与文件和文件夹打交道,因此,如何很好的使用这些文件和文件夹就非常重要。常用的文件操作如建立,删除,编辑等,既可用DOS自带的命令,也可用许多增强工具,这样可以大大提高文件操作的效率。这些工具可在本站的“文件工具”中下载,本站的文件工具中大都支持长文件名和FAT32分区。纯DOS通常只能使用短文件名,那么如何让它使用长文件名呢?其实,实现起来并不难,通常有长文件名驱动程序和直接操作长文件名两种方式,对应的工具分别有DOSLFN/LFNDOS和Odi's LFN tools,非常实用,可以作为必备工具。具体在纯DOS下使用长文件名的方法请见本站的“DOS文章”栏目中的文章。 随着电脑的发展,越来越多的人开始使用它,所以许多日常生活上的事(比如写文章,听音乐,看图像等)都在电脑上进行了。那么,如何在DOS下进行这些操作呢?先说写文章。DOS中自带一个EDIT命令,可以编辑多个文件和二进制文件,不过功能并不是很强大(比如不能设置字体等),可以使用其它专门的文字处理工具来完成。这些工具中著名的有MS-Word,CCED,WPS等,可在本站“文本”工具中下载。有些人喜欢一边打字一边听音乐,在DOS下当然也可以实现。以SETEDIT为例,这是一个非常强大实用的DOS字处理软件,不仅具有字处理的功能,还可以一边写文章一边听MP3音乐,多么好啊!因此可以将它们作为必备工具。 说完了在DOS下的文书处理,接下来就是听音乐和看图像等等操作了。DOS下听音乐和看图像的软件非常多,比如可以听WAV,MID,MP3等格式的音乐,功能和效果都非常好(绝不是最旧最差的MP3播放器DOSAMP的那种播放效果),具体可在本栏目的“DOS下的多媒体”中看到。比如QuickView,它的体积就非常小,功能却很强大,大家可将它作为必备工具。在DOS下看图像也非常方便,通常有两种方式,一种是命令行方式,一种是图形界面方式。以PictView(可在本站的“图形软件”中下载)为例,它可以播放40多种图形格式,如JPG,GIF,BMP,TGA,ICO,GIF等等,不仅速度快,质量和效果好,而且它的体积非常小,才100多K!因此,完全可以将它作为必备工具来使用。但有些图像软件,尤其是旧的图像软件,如NV等,不仅速度慢,播放质量差,而且体积也很庞大,所以最好不要使用。 DOS下还有许多非常强大实用的软件,也可以做为必备工具。DOS软件通常都很小巧实用,这自然大大方便了大家的使用。比如SHUTDOWN和POWEROFF等命令可以轻易在DOS命令行方式下实现软关机,不仅操作起来很方便,而且体积非常小,大家就可以将它们作为必备工具。还有一些DOS命令的增强工具,可以大大增强DOS自带的外部的功能,如XXCOPY,XMSDSK等等,可以在本站中下载。为了方便大家的使用,我制作了“DOS常用工具集”,包括了以上各类软件(如命令行工具,驱动程序,系统工具,磁盘工具,压缩工具,多媒体软件等)的直接运行版本,放在本站“DOS软件”栏目的“DOS系统”中,欢迎大家下载使用。 由于每个人的习惯和爱好都不相同,所以每个人所进行的主要操作也并不相同。比如有些人喜欢编程序,或编批处理文件,就可将一些实用的编处理工具(可在本站的“脚本工具”中下载)作为必备工具;有些人喜欢玩游戏,就可以将一些游戏修改软件或模拟器(可在本站的“游戏软件”中下载)作为必备工具。因此,大家还可以根据自己的喜好来选择适合于自己的必备工具。不过,大家应尽量使用那些近几年来新推出的DOS软件,因为这些软件不仅整体而言功能更强,而且支持最新的电脑技术(如FAT32分区,大硬盘,长文件名,PCI/USB设备等)。总之,只要我们善于选择和使用DOS软件,就可以将DOS变得非常强大,让DOS发挥出应有的功能。 ——————————————————————————– DOS命令行下常见的错误信息 大家在使用DOS的过程中,经常在命令行方式下遇到一些错误信息提示,由于往往是英文的,导致一些人看到后不知是怎么回事,更不知该如何解决了。下面,我就将常见的DOS命令行方式下的错误信息向大家介绍一下。 [英文] Bad command or file name [译文] 错误的命令或文件名 错误原因和解决: 这大概是大家最常见到的错误提示了,它的意思是输入的命令无效。当输入的命令既不是DOS内部命令,而且系统在查找路径或指定路径中找不到相应的可执行文件的话,就会出现此错误信息。您可以检查输入的命令是否正确,如是否打错了字母等。 [英文] Access Denied [译文] 拒绝存取 错误原因和解决: 这也是一个常见的错误,出现的情况很多,如在用DEL命令删除具有只读属性的文件,或者在多任务环境下有多个进程同时存取同一文件,以及试图在设有只读权限的网络文件夹中写入文件的时候。解决的方法也很简单,只需去掉文件的只读、隐含等属性,或保证同一时候只有一个进程在读写文件,及去掉网络文件夹的只读权限即可。 [英文] Drive not ready [译文] 驱动器未准备好 错误原因和解决: 相信大家都遇到过这个错误信息吧!尤其是在存取可移动磁盘(包括软盘和光盘)的时候更是常见到。解决方法是将磁盘插好后重试即可。 [英文] Write protect error [译文] 写保护错误 错误原因和解决: 当试图向写了保护的磁盘(通常是软盘)写入信息的时候就会出现该错误。将磁盘的写保护去掉即可。 [英文] General error [译文] 常规错误 错误原因和解决: 此错误通常出现在DOS无法识别指定的磁盘的格式的情况下,如软盘未格式化。用FORMAT等命令格式化磁盘或转换成DOS能识别的格式即可。 [英文] Abort,Retry,Ignore,Fail? [译文] 中止,重试,忽略,失败? 错误原因和解决: 此错误信息的出现频率非常高,比如在磁盘未准备好的时候。输入A则取消操作,然后返回DOS提示符下,输入R则表示再试一次,输入I则表示忽略此错误并继续,最好不要使用,输入F则表示跳过此错误,经常选择此项。 [英文] File not found [译文] 文件未找到 错误原因和解决: 在使用很多命令的时候若找不到指定的文件就会出现该提示。例如使用DIR命令的时候,若指定的文件不存在,该错误信息就会出现。解决方法是将文件名输入正确。 [英文] Incorrect DOS version [译文] 错误的DOS版本 错误原因和解决: 当要执行的命令发现当前的DOS版本与这个命令所期待的DOS版本不相同的时候就会出现此错误信息。具体情况和解决方法请见本站的“DOS文章”栏目中的文章。 [英文] Invalid directory [译文] 非法目录 错误原因和解决: 如果输入了不存在或无效的目录的时候就会出现该提示。可检查是否输入有误。 [英文] Invalid Drive Specification [译文] 指定的驱动器非法 错误原因和解决: 当输入的驱动器不存在的时候就会出现该提示。请检查是否存在该驱动器。有些驱动器(如NTFS卷,光驱,网络驱动器等)则需要加载相应的驱动程序才能被识别。 [英文] Syntax error [译文] 语法错误 错误原因和解决: 此命令在使用一些批处理命令(如IF,FOR等)时比较常见,可检查是否输入了无效的语法。以FOR命令为例,它的语法是FOR %F IN (文件名) DO 命令,不能将此语法格式弄错了(如输反了或漏了等),必须输入正确的命令才能得到相就的结果。 [英文] Required parameter missing [译文] 缺少必要的参数 错误原因和解决: 如果在执行命令(如DEL)漏掉了它要正常完成功能所需的参数时,就会出现该提示。 [英文] Invalid parameter [译文] 非法参数 错误原因和解决: 出现在执行命令时输入了无效的参数。可以检查输入的参数是否正确,有没有拼写错误等。如果您不知道有哪些参数的话,通常可以使用此命令的/?选项来看参数列表。 [英文] Not enough memory 或 Insufficient memory [译文] 内存不足 错误原因和解决: 如果在执行程序时程序发现所需的内存大于可以使用的内存(通常是指常规内存)时就会出现此信息。造成内存不足的情况如执行了过多过大的内存驻留程序,或系统内存未经过很好的配置等。大家可以看本栏目中的“DOS下内存的配置”。 [英文] Divide overflow 或 Divide by zero [译文] 除数为零 错误原因和解决: 如果在系统不稳定,与其它程序有冲突,或程序本身有问题的情况下运行程序的话就会出现此错误。可以重新启动系统后再运行此程序试试。 [英文] Runtime error xxx [译文] 运行时间错误xxx 错误原因和解决: 和以上的“除数为零”错误类似。如果xxx的值为200的话,可以见“DOS文章”栏目。 [英文] Error in EXE file [译文] EXE文件有错误 错误原因和解决: 通常是这个可执行文件已经损坏,已不能够再使用。使用一个好的就可以了。 以上是常见的DOS命令行方式下的错误信息,大家可以利用上文将故障排除。 ——————————————————————————– DOS下的多媒体 在许多人的印象中,DOS是个单任务的文本模式的操作系统,哪儿会有什么或者说是较好的多媒体功能呢?其实不然。比如,Windows 3.x和Windows 9x只不过是建立在DOS下的大型保护模式的应用程序,为何它们也能播放精采的多媒体文件呢?所以,多媒体绝非WIN等操作系统的“专利”,DOS下实现多媒体功能是完全可以的,而且由于时代的发展,新的开发器和编程序库的推出,DOS下的多媒体功能实现起来也越来越容易,功能也越来越强,大家可在“DOS近年来的发展”中看到。 注意,如果要在DOS下用声卡播放声音,首先需要设置好声卡。具体方法请见本栏目中的“DOS下硬件设备的使用与设置”。 当然,DOS操作系统本身并不带有多媒体命令,而需要专门的多媒体软件,这就像我们玩游戏需要专门的游戏软件一样。DOS下的多媒体软件有很多,旧的有SEA等,不过近几年来随着多媒体技术的发展,DOS下多媒体软件也明显增多了,如QuickView Pro、Cubic Player(OpenCP)、MPXPlay、DSS等等,大家可以到“DOS软件分类下载”中的“媒体软件”中下载。这些软件普遍可以播放WAV,MP3等格式的文件,有的则支持更多的格式,如Cubic Player,不仅支持的格式很多,包括WAV,MP3,MID,RMI,ASF,MOD,S3M,IT,ASF,669,CD音频等等,而且界面非常不错。注意大多数MP3文件播放器最好在586以上的电脑下使用,以发挥最好的效果,在486或以下电脑上播放MP3时可能会出现断音,而WAV等格式则没有问题。 有些人在原来曾使用过DOSAmp来播放MP3文件,觉得它的播放效果不好而认定DOS下播放MP3都不好。其实这是不对的。因为DOSAmp其实是DOS下最旧且功能和效果都是最差的MP3播放器,界面虽不是最差,但也只是一般,现在早已被淘汰了。我虽然经常在DOS下听MP3歌曲,却非常不喜欢用DOSAmp而是使用其它在DOS下播放较果非常好的MP3播放器进行播放。大家可以在“媒体软件”中找到。 在这么多的软件中,我向大家推荐QuickView Pro,它是一个非常强大的多媒体软件,支持的格式非常多,包括多种音乐格式(如WAV、MP3等等),各种图形格式(如BMP、GIF、JPG、PCX等等),还有很多多媒体格式(如AVI、MPG、MOV、FLC/FLI、VCD等等)。它一直在不断发展着,比如其最新的2.50版于今年8月底刚推出。其具体使用方法可以在“DOS文章”栏目中的“DOS多媒体播放器——QuickView的使用”一文中看到。当然也推荐其它一些MP3播放器,如MPXPLAY也很不错,功能相当多,如媒体的播放、转换等等它都能完成。它的界面也很好,且支持鼠标操作,十分方便实用。它现在一直在不断发展和更新着,其最新版本于今年10月刚推出。 除此之外,还有MegaMid,MidPlay等全屏幕的MIDI播放器也非常不错,不仅界面很好,功能也很强大。它们都可以显示MIDI音乐中的字幕(如果有的话),操作也十分简单。至于其它各种多媒体格式也完全可以在DOS下播放,如VideoCD(VCD)的播放,除上面的QuickView Pro,还有Mpegone等等都可以做到,效果也很好,当然最好在586以上的电脑上播放,越新效果就越好。而RealAudio等格式的播放,则可以在“DOS使用中的常见问题解答(FAQ)”专栏中看到。 总之,DOS下的多媒体功能是非常强大的。如果您有兴趣的话,也可以为“DOS开发”栏目开发一些DOS下多媒体软件,以跟上国外DOS软件的发展,并帮助广大的DOS使用者与爱好者们,还可以促进国内自由软件的发展,真是好处甚多。 ——————————————————————————– DOS下联网的方法 随着计算机和网络的普及,计算机之间的联网操作(如文件的传输,聊天等)以及Internet网络显得越来越重要了。既然DOS有这么多的用户,那么如何用它来实现联网呢?DR-DOS 7.xx和ROM-DOS 7.xx中自带联网(包括局域网和TCP/IP协议等)的功能,可是我们大家常用的MS-DOS却没有。但是,并不是没有办法,只是需要一些附加的软件。比较好的有Netware Lite 1.x和Microsoft Network Client 3.0等(均可在本站的“网络工具”中下载),下面以Microsoft Network Client 3.0为例,讲述一下局域网的实现方法。关于DOS下Internet的连接方法,请看下文。 首先在需要联网的计算机中安装Microsoft Network Client 3.0(后文简称MSCLIENT),安装中输入各自的工作组,计算机名和IP地址,以及用户名和密码,并在列表中选择安装的网卡的型号。如果列表中没有您的网卡的话,则需要网卡自带的驱动程序,通常在一张软盘中,也有可能在光盘中。当它提示输入OEM盘的时候,您就插入网卡的驱动程序磁盘,然后输入合适的路径。由于各网络系统所需的网卡驱动程序并不一样,而对于MSCLIENT一般则选择驱动盘中的NDIS2或MSCLIENT文件夹,如A:\MSCLIENT。只要正确的话,它就会进行自动安装了。至于网络协议,一般只要有NetBEUI和TCP/IP协议就够了,装太多会减慢网络的速度。安装完成后,MSCLIENT会自动将网络启动命令放入AUTOEXEC.BAT中,重新启动计算机后就会发现网络自动启动了。当系统提示输入用户名和密码时,输入刚才设置的就可以了。这时,网络就开始运转了,比如您想查看当前工作组下的所有计算机,可输入NET VIEW命令。 不过,这时候大家都还是客户机,还没有服务器,必须安装服务器才可以共享文件。安装后可用NETSHARE命令设置共享路径,如将D盘设为共享,如果必要的话,还可以设置密码,以免非法访问。一旦设好服务器和共享,客户机就可以访问该计算机上的资源了。比如:NET USE E: \\PC\C命令就会将名称为PC的计算机上的共享名为C的驱动器(或文件夹)重定向到E盘,此时远程计算机上的内容就可以像本地计算机那样访问了。不过还有一点很重要,那就是要将MSCLIENT的文件和打印机的共享功能的设置打开,方法是用EDIT等文本编辑器打开MSCLIENT文件夹中的SYSTEM.INI,将[network]项中的filesharing和printsharing的值全部改为yes,保存并退出后就可以使用文件和打印机的共享功能了。 如果想将使用DOS和使用Windows的计算机相联,也是完全可以的。由于Windows 3.11 for Workgroups,Windows 9x以及Windows NT/2K/XP中采用的是一种叫做“Microsoft Windows Network”的网络,和DOS下的Microsoft Network Client 3.0是兼容的,所以它们之间可以实现非常完好的互相访问,就像DOS与DOS之间,或Windows与Windows之间的网络一样。不过要注意的是,若想要使用DOS的计算机访问使用Windows NT/2K/XP的计算机,则一定要在Windows NT/2K/XP中设置DOS计算机的用户帐户,否则无法访问。 Microsoft Network Client 3.0中有许多非常实用的命令,如PING等,如果您想知道这些命令及其用法,请见“DOS文章”栏目。 除了使用MSCLIENT以外,还可以使用Netware等工具联网。以Netware Lite为例,安装完后直接执行STARTNET.BAT即可自动调入对等网(包括服务器)。这时可用它自带的NET命令进行全%

『柒』 如何编写程序

第七章 文件类型7.1 文件类型7.1.1 文件类型以前我们把数据放在变量或数组中,它的缺点是不能对数据永久保存,因为关机后内存RAM(随机存储器)中的数据会全部掉失。这一章我们学习把数据或运算最后结果放到文件中,实现永久保存,或方便重复读入使用。Turbo Pascal中引入文件变量这概念,也就是说要对实际的外部文件操作,首先要定义一个文件变量与它联系起来,并要定义这个文件变量的文件类型,文件的类型明确指出联系着的外部文件中数据的存放格式。Turbo Pascal中的文件类型有:类型文件、文本文件(text)和无类型文件(file)。文本文件(text)和无类型文件(file)是系统已定义好的标准文件类型,在写程序时可直接使用其文件类型标识符(即text和file 这两个标准文件类型标识符)。Turbo Pascal中,用assign标准过程来建立文件变量与实际外部文件的联系,对于一个已存在的文件可用reset标准过程或append标准过程打开,用reset打开文件时指针指向第一条数据,而用append打开文件时指针指向最后一条数据的后面,故append适合向文件追加数据用。对于一个不存在的文件可用rewrite标准过程创建新文件并打开。我们对文件处理完后,记住要用close标准过程关闭文件,否则数据有可能仍停留在磁盘缓冲区中,没有被真正写入文件。特别注意的是对于文本文件(text)类型定义的文件,用reset标准过程打开文件时,只能进行读操作,不能写数据到文件中。目前,中学生信息学(计算机)奥林匹克竞赛中,数据的读写主要采用文本文件,故本章只介绍文本文件的使用。7.2 文本文件及其应用7.2.1文本文件所谓文本文件就是指数据按文本文件类型规定的格式存放的文件。Turbo Pascal中,文本文件类型(text)是系统已定义好的标准文件类型,我们编写程序时可直接使用文本文件类型标识符(text)。文本文件是应用最广泛的一种文件,大多数程序的输入和输出都是文本文件。文本文件中的各个分量是字符,它们均是以ASCII码的方式存放的。多个ASCII字符组成一个文本行。行与行之间通过行结束符(CR/LF)来分隔。行结束符由两个特殊的控制字符组成,它们是回车符(ASCII表中表示为CR或#13,码值为13)和换行符(ASCII表中表示为LF或#10,码值为10),当我们用文本编辑器打开文本文件时行结束符是看不到的,往文件中输出行结束符的方法常见有三种,第一种是:用writeln标准过程输出。第二种用write标准过程输出chr(13)+chr(10)表达式。第三种用write标准过程输出#13#10。行结束符可用标准函数eoln(x) 检测到,其中x为文件变量,当返回结果为true表示行结束。每个文件结束位置都应有一个文件结束符,各种文件编辑器在关闭文件时会自动写入,在程序中可用close标准过程写入,在DOS方式下采用 con [盘符][路径][文件名]命令格式建立时,写入文件结束符的方法是按ctrl+Z 。文件结束符可用标准函数eof(x)检测 ,其中x为文件变量,当返回结果为true表示文件结束。在Turbo Pascal中,计算机中已定义好两个特殊的文件变量,即input和output,它们的文件类型就是文本文件类型(text),input变量的外部联系设备是键盘,output变量的外部联系设备是显示器,即把键盘输入和显示器输出被当作两个文本文件处理。这两个特殊的文本文件在运行程序时,系统会自动打开,在程序结束时,系统又会自动关闭。由于input和output在程序中被频繁使用,所以在使用它们对显示器和键盘操作时,常常将文件变量标识符input和output省去,以前我们写的程序都是这样处理的。例如:eof等价于eof(input);eoln等价于eoln(input);read(a,b,c)等价于read(input,a,b,c);readln(a,b,c)等价于readln(input,a,b,c); readln等价于readln(input)writeln(a,b,c)等价于writeln(output,a,b,c); writeln等价于writeln(output)例7.1体会input,output的说明不省略时的本来真面目。program rzy7_1;var c:integer;begin read(c); writeln(c);end. program rzy7_1;var c:integer; input,output:text;等效程序效begin assign(input,'' ); assign(output,'' ); reset(input); rewrite(output);注意:' '是空字符串,对应键盘或显示器。input和output是系统已定义好的文本文件型文件变量,系统允许省略所有对它们的说明。 read(input,c); writeln(output,c); close(input); close(output);end. 运行程序,输入数据:AB �0�7 CDE �0�7 输出结果:65 66 13 10 67说明:C[1],C[2],C[5]分别存入对应A,B,C字符,而C[3]和C[4]中却保存了行结束符#13和#10。而D和E字符实际上并没有读入。从文本文件中以字符方式读入数据时,经常发生这种情况,这点我们编程时要特别注意! 此例说明了行结束符(CR/LF)的存在。例7.2 体会行结束符的存在。program rzy7_2;var i:integer; c:array[1..5] of char;begin for i:=1 to 5 do read(c[i]); for i:=1 to 5 do write(ord(c[i]),' ');end. 例7.3 对例7.2改进,以字符方式读数但不想把行结束符读入数组的办法是用eoln函数。运行程序,输入数据:AB �0�7 CD�0�7 E F�0�7 输出结果:65 66 67 68 69说明:C[1],C[2],C[3] ,C[4],C[5]分别存入了A,B,C,D,E字符,F字符没有被读入,因这程序只读5个数。本程序实现不读入行结束符的方法是:用eoln函数判断当前位置是否有行结束符,如果有则用readln标准过程掉丢本行还未读入的所有数据。其实readln(x,y)等效于read(x,y);readln;这两句的组合。现在您对read与readln的运用有更深刻体会吗?program rzy7_3;var i:integer; c:array[1..5] of char;begin i:=1; while i<=5 do if eoln then readln else begin read(c[i]); i:=i+1; end; for i:=1 to 5 do write(ord(c[i]),' ');end. 例7.4 试编程把1至100的数写入文件rzy7_4.txt,要求数与数间用空格分隔,每行10个数。说明:(1)outfile为文件变量,定义为文本文件(text)类型,用assign标准过程把outfile文件变量与当前目录的rzy7_4.txt文件联系起来,如果文件放在c:\tp7\program目录中,应改为:assign(outfile,'c:\tp7\program\rzy7_4.txt');(2)rewrite(outfile)告诉系统每次运行程序都要新建文件。(3)write(outfile,i,' ');作用是把i值和一个空格字符写入outfile对应的文件中。(4)writeln(outfile)作用是往outfile对应的文件中写入一个行结束符。(5)close(outfile)作用是关闭文件。program rzy7_4;var outfile:text; i:integer;begin assign(outfile,'rzy7_4.txt'); rewrite(outfile); for i:=1 to 100 do begin write(outfile,i,' '); if (i mod 10)=0 then writeln(outfile); end; close(outfile);end. Turbo Pascal 编辑器也是一个文本文件编辑器,我们可以用这个编辑器打开上面程序生成的数据文件rzy7_4.txt文件,文本文件习惯用扩展名.txt。试用Turbo Pascal编辑器的[File]的[Open]打开放在当前目录中rzy7_4.txt文件,注意要输入文件全名,观察程序生成的数据是否合理。说明:自定义inputfile为文本文件类型的文件变量,和例7.4中的outfile都是自定义的文件变量标识符,自定义的文件变量的起名也应尽量包含一定的实际含义,才能便于记忆,减少错误。例7.5 试编程序从当前目录的数据文件rzy7_4.txt中读入数据,并显示在屏幕中,要求每行示显10个数。program rzy7_5;var x,k:integer; inputfile:text;begin说明:(1)assign(inputfile,'rzy7_4.txt' 作用是把inputfile文件变量与外部文件联系起来。(2)reset(inputfile)作用是打开文件。(3)eof(inputfile)作用是判断当前位置是否文件结束位置。(4)read(inputfile,x)作用是从inputfile指定的文件中读入一个数到x中。(5)write(x,' ')作用是往屏幕中输出数和空格字符。(6)close(inputfile)作用是关闭inputfile联系着的文件。(7)注意:除了对应键盘和屏幕的文件变量(input,output)可省外,其它都不能省。 assign(inputfile,'rzy7_4.txt'); reset(inputfile); k:=0; while not eof(inputfile)and (k<100) do begin read(inputfile,x); write(x,' '); k:=k+1; if (k mod 10)=0 then writeln; end; close(inputfile);end. 如果大家想对标准过程assign、close和函数eoln、eof有更多了解,请阅读Turbo Pascal编辑器中的帮助文件(help)说明。7.2.2 文本文件的写数据应用把数据写入文本文件的方法是很简单的,与由上至下,由左向右写屏幕的方法一样,不同的是要指明文件变量,另外写完所有数据后要记住关闭文件。例7.6 生成文件rzy7_6.txt,要求第一行为总人数,第二行开始为每行记录人的姓名、语文、数学、英语、总分、平均分,数据间要用逗号分隔。样例如下:运行程序输入格式如下:enter peoples number= 3 no:1name=Limingchinese,maths,englist:70 75 60no:2name=Ryuanchinese,maths,englist:80 76 70no:3name=kuyuanchinese,maths,englist:68 76 55试用文本文件编辑器打开rzy7_6.txt内容如下:3Liming,70,75,60,205, 68.3Ryuan,80,76,70,226, 75.3kuyuan,68,76,55,199, 66.3 说明:也可以在DOS方式下执行dos命令:type rzy7_6.txt查看内容。 说明:(1)定义stfile文件变量为文本文件类型。name存放姓名,最长为16位的字符串型,如果用string则字符串长度为255位。c,m,e,t,av分别对应语文,数学,英语,总分,平均分。(2)assign建立了stfile文件变量与外部文件的联系。rewrite(stfile)表示每次总是新建文件。program rzy7_6;var stfile:text; name:string[16]; i,n,c,m,e,t:integer; av:real; begin assign(stfile,'rzy7_6.txt'); rewrite(stfile);说明:(3)write语句中,如果没有指明时stfile的,则输送到屏幕(output)中。(4) writeln(stfile,n);的作用相当于write(stfile,n);writeln(stfile)两句的作用,其中writeln(stfile)实现输出行结束符的作用。 write('enter peoples number='); readln(n); writeln(stfile,n); for i:=1 to n do begin writeln('no:',i); write('name=');readln(name);(5)由于输出数据中要求带逗号作分隔符,所以这里把逗号作为字符输出即可。 write('chinese,maths,english:');readln(c,m,e); t:=c+m+e; av:=t/3; writeln(stfile,name,',',c,',',m,',',e,',',t,',',av:5:1); end; close(stfile);end. 7.2.3文本文件的读数据应用由于Turbo Pascal的read或readln标准过程对读数格式都有严格的要求。即数与数间要求用空格分隔。另外读取时不应出现理解上的错误。如:readln(c,x),其中c为字符串型,x为数值(实数或整数)型时,输入数据:rzy 25.6 时,计算机会误解为c:='rzy 25.6' 而要求再提供一个数值给x 。或c为string[3]时,提供数据rzy 25.6可以通过,虽然能令c:='rzy',x:=25.6 但是改为提供数据r 25.6时,会误解为c:='r 2' ,x:=5.6000000000E+00 。因此遇到文件中数值型与字符串型数据混合作为数据行或数据间用非空格字符分隔等格式时,我们只能把整行作为一个字符串读入,然后再用与字符处理相关的标准函数或过程把数据从字符串中分离出来。例7.7:非标准输入格式例子。请先用Pascal编辑器建立下面内容的数据文件,然后运行程序从文件中读入数据并显示在屏幕中。其中数据文件名改为运行程序时提供。rzy7_7.txt文件内容及格式如下:rzy,c112,65,76mxf,g112,85,78huangjian,g212,87,77运行程序如下(假定输出文件为rzy7_7.txt):enter input filename:rzy7_7.txtrzy c112 65 76mxf g112 85 78huangjian g212 87 77 参考程序如下:program rzy7_7;定义过程procesting专门用于处理一行字符串。从题目知数椐格式为每行有2个字符串和2个整数。故定义st1,st2,x,y分别保存。e用于保存逗号位置。st为作暂存变量用。var infile:text; s,filename:string;procere procesting(s:string); var st1,st2,st:string; x,y,e,code:integer; begin从字符串中分离数据处理:(1)求逗号位置;(2)截取逗号前字符串;(3)从字符串中删去已截取的子字符串及逗号。重复上述过程即可。对于整数部分,把截取或最后剩余的子字符串转换为数值即可,code是规定作为返回是否转换成功的标志。若返回code=0表示转换成功。有关函数使用请查阅帮助说明或书1.2.7节内容。 if s>' ' then begin e:=pos(',',s); st1:=(s,1,e-1); delete(s,1,e); e:=pos(',',s); st2:=(s,1,e-1); delete(s,1,e); e:=pos(',',s); st:=(s,1,e-1); delete(s,1,e); val(st,x,code); val(s,y,code); writeln(st1,' ',st2,' ',x,' ',y); end; end;提供的数据文件可能不存在,怎么办?办法:在reset或rewrite前加入编译开关{$I-},其作用是:令所有接口(I/O)错误不提示也不中断程序执行。试着打开(reset)或建立(rewrite)文件后再把编译开关设回{$I+}。Turbo Pascal已定义好一个不带参数的标准函数ioresult,可返回接口错误情况,其中返回值为0表示成功读写。试查阅帮助说明。本程序把一行作为一个字符串读入后,再对字符串s分解数据。

『捌』 用C语言如何编写如下的程序

1、打开记事本;

2、使用文件中的“打开”菜单;

3、在弹出的对话框中选择文件类型为“所有文件”,然后再浏览到程序文件,点击打开。

但是如果需要在编译器环境中进行调试或编译等操作,则必须使用编译器,编译器必须使用与C语言文件在编写时使用的环境要求,不同的编译器提供的库函数不同,不能混用。

『玖』 题目:编写程序在D:\创建文件alphabet.txt并向该文件中写入大写字母A~Z 用java怎么编写

/** * 重新写入 * @param path 写入文件路径 * @param str 写入内容 * @return * @throws IOException */ public boolean writer(String path,String str) throws IOException { File file = new File(path); BufferedOutputStream bout = null; try { OutputStream out = new FileOutputStream(file); bout = new BufferedOutputStream(out); bout.write(str.getBytes()); bout.flush(); } catch (IOException e) { e.printStackTrace(); throw e; } finally { if (bout != null) { bout.close(); } } return true; }调用此方法,将参数设为你要的路径和内容即可


赞 (0)