正文

文件操作的实际应用,有原代码2005-09-26 13:00:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/iamben250/5350.html

分享到:

文件操作的实际应用,有原代码


 


 

们来做个文件分割程序
这个程序网上遍地都是,所以我们就从这个简单的东西入手
不要说已经有了就不用做,关键是你没有,你没有做过!
通过做这个程序来锻炼一下自己!


用途:一个文件太大,用u盘装不下,或者上传时有的对大小有限制,总而言之,这个东西有用才有人做!

前期准备:把一个文件分成规定的大小,在这里可以自定义每个分割的大小,也可以规定分割
的份数,在这里我们要学习一下有关文件操作相关的语句
我体会,文件这一章放在后面讲,并不是因为它难,我在真正开始做的时候就是从
文件这个开始的,一个学dos编程的人必须对dos系统有所了解,一定要对路径这个概论
很清楚,目前微软的操作系统在文件的管理上都是这个东西!
(1).OPEN 语句
格式:OPEN <文件名> FOR <读写方式> AS#<文件号>
<读写方式>:
这里我们只用二进制方式BINARY
<文件号>:即文件缓冲区号,每一个文件都要指定一个不同的文件号(1~225);
说明:
以BINARY方式打开已存在的文件,指针指向首记录;
(2)CLOSE语句
关闭已用的文件
CLOSE [#<文件号1>][,#<文件号2>]……
关闭由文件号指定的文件缓冲区,将内容存盘,如不指定文件号,则关闭所有已打开的文件;
(3)、GET#语句
格式:GET #<文件号> [,<地址>][,<记录变量>]
功能: 用于从文件中读一个指定地址的记录,赋给一个记录变量。
(4)、PUT#语句
格式:PUT #<文件号> [,<地址>][,<记录变量>]
功能: 将一个记录变量的内容写到指定地址的记录中去
(5)SEEK语句
格式:SEEK#<文件号>,<字节位置>
把指针移动指定地方
(6)LOF语句
格式:LOF<文件号>
获得文件的大小!
(7)EOF语句
格式:EOF<文件号>
判断文件是否到最后!

积累了相关知识后我们来做下面的程序
先要得到一个要分割的文件名,用INPUT语句,或者自己指定一个都可以
用 INPUT filename$
或者 filename$ = "c:\MP3\2002.mp3"
获得文件名后用二进制方式打开它
OPEN filename$ FOR BINARY AS #1
用LOF语句可以得到文件的长度,大家可以先是是看,如果为0,那么可以判断这个文件不存在!

PRINT "这个文件大小为: ";LOF(1)
if lof(1)=0 then PRINT "没有这个文件"
在就是要确定要分割的大小了,这里,我用份数来确定要分割的大小,当然这个在使用中是不方便的,这里让大家自己去想想看!我只是给个思路
x = 10 '在这里我把这个文件分成10份
x1 = INT(LOF(1) / x) '得到每份的长度!
如果长度要自己输入来确定那么份数的就不可能是10份,用这个公式x=INT(LOF(1) / x1)
用两个循环来做分割,第一个循环是份数,第二个循环是每份的大小
    FOR i = 1 TO x
       file$ = LTRIM$(STR$(i)) '自动获得分割后的文件名
       OPEN file$ FOR BINARY AS #2
       FOR i1 = 1 TO x1
           LOCATE 10, 10: PRINT i, i1
           IF EOF(1) THEN PRINT "File Cut ok!!!!": END
           GET #1, , r%   '从要分割的文件读
           PUT #2, , r%   '写入要分割的文件
       NEXT i1
       CLOSE #2
   NEXT i

现在我们把整个程序从新看一遍
cls
INPUT filename$
OPEN filename$ FOR BINARY AS #1
IF LOF(1)=0 THEN END
x = 10
x1 = INT(LOF(1) / x)
  
    FOR i = 1 TO x
       file$ = LTRIM$(STR$(i))
       OPEN file$ FOR BINARY AS #2
       FOR i1 = 1 TO x1
           LOCATE 10, 10: PRINT i, i1
            IF EOF(1) THEN PRINT "File Cut ok!!!!": END
           GET #1, , r%
           PUT #2, , r%
       NEXT i1
       CLOSE #2
   NEXT i
在这里如果你要分割的是一个很大的文件,比如要分割一个mp3,可能得4\5分钟!
怎么半呢?
r%这个变量是一个整数,每次读写只有两个字节,当然慢,我们可以用字符变量来读写
例如R$=SPACE$(512)每次可以读写512个字节,如果用R$=SPACE$(1024)可以每次读写1024个字节,当然也可以只读写一个字节!
我丢了个砖头,剩下的有兴趣的自己去弄吧!
别只是做题目!
当然做题目也没有错!
比如有个三角函数,你可以用它来确定坐标来做一个点的运动,这里就需要数学知识了,凡是动画得要这个东西!
别的...我看不会用到!

阅读(2782) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册