收藏 分销(赏)

文件读写.doc

上传人:仙人****88 文档编号:8322735 上传时间:2025-02-09 格式:DOC 页数:63 大小:243KB 下载积分:10 金币
下载 相关 举报
文件读写.doc_第1页
第1页 / 共63页
文件读写.doc_第2页
第2页 / 共63页


点击查看更多>>
资源描述
点击“读取”按钮执行以下代码:             Dim   FileName   As   String             Dim   s1   As   String             Text1.Text   =   ""             FileName   =   App.Path   +   "\"   +   "1.txt"       '----假设文本文件的名为1.txt             Open   FileName   For   Input   As   #1                             Do   While   Not   EOF(1)                             Line   Input   #1,   s1                             Text1.Text   =   Text1.Text   +   s1   +   Chr(13)   +   Chr(10)                     Loop             Close   #1 vb读取文本文件一行中的固定位置的变量 例如下面一行中 0507 99 16 98 16 98 160507 (94 11) 97 230503 各个数字都是变量(每分钟一变)我想从中读取括号内两个变量(括号并不存在)这两个变量在这行中的位置是固定的,请问如何实现 希望各位高手不吝赐教vb详细代码 Dim s$, ss() As String s = "0507 99 16 98 16 98 160507 94 11 97 230503" ss = split(s) msgbox ss(7) & "," & ss(8)    '显示“94,11” Dim s$, s1$, k&, ss() As String, i& s = "0104 69 90 12 16 98 160 57 94 11 97 30503 12123 6767 778 999" k = 37 s1 = Right$(s, Len(s) - k + 1) ss = Split(s1, " "): s = "" For i = 0 To 3     s = s & ss(i) & vbCrLf Next MsgBox s '四个数 读取zz.txt的代码: Private Type zdz_zz '218字节,----、////表示缺测或无记录     s1 As String * 4 '北京时间,如0800     s2 As String * 4 '2分钟风向     s3 As String * 4 '2分钟平均风速     s4 As String * 4 '10分钟平均风向     s5 As String * 4 '10分钟平均风速     s6 As String * 4 '最大风速时风向     s7 As String * 4 '最大风速     s8 As String * 4 '最大风速时间     s9 As String * 4 '瞬时风向     s10 As String * 4 '瞬时风速     s11 As String * 4 '极大风向     s12 As String * 4 '极大风速     s13 As String * 4 '极大风速时间     s14 As String * 4 '雨量     s15 As String * 4 '干球温度     s16 As String * 4 '最高气温     s17 As String * 4 '最高气温出现时间     s18 As String * 4 '最低气温     s19 As String * 4 '最低气温出现时间     s20 As String * 4 '湿球温度 , ****为冬季湿球停用     s21 As String * 4 '湿敏电容湿度值     s22 As String * 4 '相对湿度     s23 As String * 4 '最小相对湿度     s24 As String * 4 '最小相对湿度出现时间     s25 As String * 4 '水汽压     s26 As String * 4 '露点温度     s27 As String * 4 '本站气压,如 0235,9999     s28 As String * 4 '最高本站气压     s29 As String * 4 '最高本站气压出现时间     s30 As String * 4 '最低本站气压     s31 As String * 4 '最低本站气压出现时间     s32 As String * 4 '草面(雪面)温度     s33 As String * 4 '草面(雪面)最高温度     s34 As String * 4 '草面(雪面)最高时间     s35 As String * 4 '草面(雪面)最低温度     s36 As String * 4 '草面(雪面)最低时间     s37 As String * 4 '地面温度     s38 As String * 4 '地面最高温度     s39 As String * 4 '地面最高出现时间     s40 As String * 4 '地面最低温度     s41 As String * 4 '地面最低出现时间     s42 As String * 4 '5厘米地温     s43 As String * 4 '10厘米地温     s44 As String * 4 '15厘米地温     s45 As String * 4 '20厘米地温     s46 As String * 4 '40厘米地温     s47 As String * 4 '80厘米地温     s48 As String * 4 '160厘米地温     s49 As String * 4 '320厘米地温     s50 As String * 4 '蒸发量     s51 As String * 4 '日照     s52 As String * 5 '能见度     s53 As String * 5 '最小能见度     s54 As String * 4 '最小能见度出现时间 End Type Private Sub Command1_Click() Dim d As zdz_zz, f1%, zz$, ss$ zz = "d:\zdz\zz.txt" f1 = FreeFile: Open zz For Random As #f1 Len = Len(d): Get #f1, 1, d: Close #f1 ss = "" ss = ss & "当前气温=" & Val(d.s15) / 10 & vbCrLf ss = ss & "相对湿度=" & Val(d.s22) & vbCrLf ss = ss & "地面温度=" & Val(d.s37) / 10 MsgBox ss End Sub 使用matlab进行数据批处理! 鉴于多数人对于高级语言不是很熟练,这里我使用matlab为例进行数据的批处理工作。 考虑一个文件件内有n个同一属性的数据文件,每个文件代表不同的年份,怎么对于这些文件进行统计整理? 下面是代码: 输入,比如在某文件夹内有n个txt或是dat等格式的文件,现在要一次性读入matlab: %method 1: cd f:\xxx   %xxx即是文件所在文件夹。 dat=struct2cell(dir); for i=1:length(dat)-2   data{i}=importdata(dat{1,i+2}); %使用元胞数组存储各文件中的内容。 end %method 2: dat1=dir('f:\data'); for i=1:length(dat1)-2   data1{i}=importdata(dat1(i+2).name); end 多文件的输出: 考虑这个问题,我们必须先生成一个可以产生连续整数序列的函数生成注入001、002、003、……、999 类似整数。 我写了一个,作为参考: function b=fullnum(n) if n~=floor(n)||n<=0||n>9999   fprintf('Error:The number is not allowed float-point,less than 0 or larger than 9999!\n');   return; end b={}; for i=1:n   if i<10^floor(log10(n))     b{i}=strcat(char(ones(1,floor(log10(n))-floor(log10(i)))*48),int2str(i));   else     b{i}=int2str(i);   end end end 下面使用类似这个的模板,存储一个元胞数组的内容到一系列连续文件名的文件: mkdir F:\data name=fullnum(41); for i=1:41   a=data{i};   save(strcat('F:\data\data',name{i},'.txt'),'a','-ascii'); end 你要将A文件中的天气现象代码与同一天的时间等区分开来,其次不知你注意没有,我们青海省milos500自动站就带有天气现象字体,分别是ACW.FON,以及系统盘windows的fonts文件夹下的EUDC.EUF,EUDC.TTE三个文件,有了他们,天气现象代码可以判断对应还原,用if语句,或者select都可以,如: dim  tqdm as string'天气代码 dim tqxx as string'天气现象符号 if  tqdm="17" then       tqxx= Chr(63678) end if 具体你可以试一下我在气象软件板块做的适合于青海省的A文件要素提取工具。以下是我在A文件要素提取工具中使用的一个函数,不过是天气现象转换为代码,函数如下: Private Function txz(tx) As String  '天气现象转换为对应的数字       If tx = Chr(63663) Then '为露           txz = "01"       End If       If tx = Chr(63664) Then '为霜           txz = "02"       End If       If tx = Chr(63671) Then '为结冰           txz = "03"       End If       If tx = Chr(63675) Then  '为烟幕           txz = "04"       End If       If tx = Chr(63676) Then '为霾           txz = "05"       End If       If tx = Chr(63674) Then '为浮尘           txz = "06"       End If       If tx = Chr(63673) Then '为扬沙           txz = "07"       End If       If tx = Chr(63677) Then '为尘卷风           txz = "08"       End If       If tx = Chr(63662) Then '为轻雾           txz = "10"       End If       If tx = Chr(63679) Then '为闪电           txz = "13"       End If       If tx = Chr(63680) Then '为极光           txz = "14"       End If       If tx = Chr(63681) Then '为大风           txz = "15"       End If       If tx = Chr(63670) Then '为积雪           txz = "16"       End If       If tx = Chr(63678) Then '为雷暴           txz = "17"       End If       If tx = Chr(63682) Then '为飑           txz = "18"       End If       If tx = Chr(63669) Then '为龙卷           txz = "19"       End If       If tx = Chr(63672) Then '为沙尘暴           txz = "31"       End If       If tx = Chr(63667) Then '为吹雪           txz = "38"       End If       If tx = Chr(63668) Then '为雪暴           txz = "39"       End If       If tx = Chr(63661) Then '为雾           txz = "42"       End If       If tx = Chr(63666) Then '为雾凇           txz = "48"       End If       If tx = Chr(63651) Then '为毛毛雨           txz = "50"       End If       If tx = Chr(63665) Then '为雨凇           txz = "56"       End If       If tx = Chr(63649) Then '为雨           txz = "60"       End If       If tx = Chr(63657) Then '为雨夹雪           txz = "68"       End If       If tx = Chr(63652) Then '为雪           txz = "70"       End If       If tx = Chr(63660) Then '为冰针           txz = "76"       End If       If tx = Chr(63655) Then '为米雪           txz = "77"       End If       If tx = Chr(63683) Then '为冰粒           txz = "79"       End If       If tx = Chr(63650) Then '为阵雨           txz = "80"       End If       If tx = Chr(63658) Then '为阵性雨夹雪           txz = "83"       End If       If tx = Chr(63653) Then '为阵雪           txz = "85"       End If       If tx = Chr(63654) Then '为霰           txz = "87"       End If       If tx = Chr(63659) Then '为冰雹           txz = "89"       End If     End Function 对A文件部分气象要素的提取 为弄清楚与气象因子相关的逐步回归方程,写了下面一段程序,用来提取A文件中部分要素值,刚学的编程,写得很杂乱,但还好,可以通过测试。 '从每月A文件中分别读取气压、温度、湿度、风向、风速、降水、能见度、总云量、低云量、地温、日照,分别存入相应二唯数组(I表示日期,J表示小时),并写入文件中,提取的A文件格式为基准站格式。     Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click         Dim textfile As String         OpenFileDialog2.ShowDialog()         textfile = OpenFileDialog2.FileName         Dim aYear1, aMonth1, aYear, aMonth As String         aYear = textfile.Substring(16, 4)         aMonth = textfile.Substring(20, 2)         ListBox1.Items.Add(textfile)         Dim sr As IO.StreamReader = IO.File.OpenText(textfile)         Dim qiya As String         Dim a As Integer = 500         Dim c As Integer         c = bc(aYear, aMonth)         Dim row, s, one(100), two(), wendu(a, 24), yali(a, 24), shidu(a, 24), fengxiang(a, 24), fengsu(a, 24), jiangshui(a, 24), _                                 wendu1(a, 24), yali1(a, 24), shidu1(a, 24), fengxiang1(a, 24), fengsu1(a, 24), jiangshui1(a, 24), _                                 Na(a, 24), Na1(a, 24), Nb(a, 24), Nb1(a, 24), Va(a, 24), Va1(a, 24), Da(a, 24), Da1(a, 24), Sa(a, 24) As String         Dim i, j, p, numlines, upperbound As Integer         p = 0         Do While (sr.Peek <> -1)             row = sr.ReadLine             numlines += 1         Loop         '行数数组下标变量值         upperbound = numlines - 1         sr.Close()         sr = IO.File.OpenText(textfile)         For i = 0 To upperbound             row = sr.ReadLine             If row = "PC" Then '从A文件中提取气压要素并存入数组 yali(a, j)中                 a = 1                 row = sr.ReadLine                 Do                     If row.Length >= 59 Then                         one = row.Split(" ")                         If a = 1 Then                             For j = 0 To 3                                 yali1(c, j + 21) = one(j)                             Next                         End If                         For j = 4 To 11                             yali(a, j - 3) = one(j)                         Next                         row = sr.ReadLine                         two = row.Split(" ")                         p = row.Length                         If row.Substring((p - 1), 1) <> "=" Then                             For j = 0 To 11                                 yali(a, j + 9) = two(j)                             Next                             row = sr.ReadLine                             two = row.Split(" ")                             For j = 0 To 3                                 yali(a, j + 21) = two(j)                             Next                             a = a + 1                         Else                             For j = 0 To 11                                 yali(a, j + 9) = two(j)                             Next                             a = a + 1                             Exit Do                         End If                     End If                 Loop Until row.Length < 59             End If             If row = "TB" Then '从A文件中提取温度要素并存入数组 wendu(a, j)中                 a = 1                 row = sr.ReadLine                 Do                     If row.Length >= 59 Then                         s = row.Substring(0, 59)                         one = row.Split(" ")                         If a = 1 Then                             For j = 0 To 3                                 wendu1(c, j + 21) = one(j)                             Next                         End If                         For j = 4 To 11                             wendu(a, j - 3) = one(j)                         Next                         row = sr.ReadLine                         s = row.Substring(0, 59)                         two = s.Split(" ")                         p = row.Length                         If row.Substring((p - 1), 1) <> "=" Then                             For j = 0 To 11                                 wendu(a, j + 9) = two(j)                             Next                             row = sr.ReadLine                             s = row.Substring(0, 59)                             two = s.Split(" ")                             For j = 0 To 3                                 wendu(a, j + 21) = two(j)                             Next                             a = a + 1                         Else                             For j = 0 To 11                                 wendu(a, j + 9) = two(j)                             Next                             a = a + 1                             Exit Do                         End If                     End If                 Loop Until row.Length < 59             End If             If row = "UB" Then '从A文件中提取湿度要素并存入数组 shidu(a, j)中                 a = 1                 row = sr.ReadLine                 Do                     If row.Length >= 35 Then                         one = row.Split(" ")                         If a = 1 Then                             For j = 0 To 3                                 shidu1(c, j + 21) = one(j)                             Next                         End If                         For j = 4 To 11                             shidu(a, j - 3) = one(j)                         Next                         row = sr.ReadLine                         two = row.Split(" ")                         p = row.Length                         If row.Substring((p - 1), 1) <> "=" Then                             For j = 0 To 11                                 shidu(a, j + 9) = two(j)                             Next                             row = sr.ReadLine                             two = row.Split(" ")                             For j = 0 To 3                                 shidu(a, j + 21) = two(j)                             Next                             a = a + 1                         Else                             For j = 0 To 11                                 shidu(a, j + 9) = two(j)                             Next                             a = a + 1                             Exit Do                         End If                     End If                 Loop Until row.Length < 35             End If             '提取总云量,存入NA(a,j)中             If row = "NA" Then                 a = 1                 row = sr.ReadLine                 p = row.Length                 one = row.Split(" ")                 If a = 1 Then                     For j = 0 To 3                         Na1(c, j + 21) = one(j)                     Next                 End If                 For j = 4 To 23                     Na(a, j - 3) = one(j)                 Next                 Do                     row = sr.ReadLine                     p = row.Length                     one = row.Split(" ")                     If row.Substring(p - 1, 1) <> "=" Then                         one = row.Split(" ")                         For j = 0 To 3                             Na(a, j + 21) = one(j)                         Next                         a = a + 1                         For j = 4 To 23                             Na(a, j - 3) = one(j)                         Next                     Else                         row = row.Substring(0, p - 1)                         one = row.Split(" ")                         For j = 0 To 3                             Na(a, j + 21) = one(j)                         Next                         a = a + 1                         For j = 4 To 23                             Na(a, j - 3) = one(j)                         Next                         '提取低云量                         a = 1                         row = sr.ReadLine                         p = row.Length                         one = row.Split(" ")                         If a = 1 Then                             For j = 0 To 3
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服