以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  怎么获取所选择的目录,并读取该目录下的所有文件的内容  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=160331)

--  作者:cnsjroom
--  发布时间:2021/1/29 11:49:00
--  怎么获取所选择的目录,并读取该目录下的所有文件的内容
Dim dlg As New OpenFileDialog
dlg.Filter = "所有文件|*.*"
If dlg.ShowDialog =DialogResult.OK Then
    Dim fl As String = dlg.FileName   \'获取所选择的文件名
    Dim fl1 As String =FileSys.GetParentPath(fl)  \'根据文件名返回目录
    For Each File As String In FileSys.GetFiles(fl1)   \'遍历目录下的所有文件
        Output.Show(File)
        Dim s As String = FileSys.ReadAllText(File, Encoding.Default) \'读取文件内容
        output.Show(s)
    Next
End If

上述代码有没有更加简洁的办法  就是直接选择文件夹目录  即可  而不是先通过选择文件 然后返回目录  再去读该目录下的所有文件的内容

--  作者:有点蓝
--  发布时间:2021/1/29 11:58:00
--  
选择目录参考:http://www.foxtable.com/webhelp/topics/0359.htm

但是读该目录下的所有文件也必须使用FileSys.GetFiles

--  作者:cnsjroom
--  发布时间:2021/1/29 12:24:00
--  回复:(有点蓝)选择目录参考:http://www.foxtable....
OK  有点蓝老师
Dim v As String
Dim s As new StringBuilder
Dim dz As String=   Format(Date.Now,"F")
FileSys.CreateDirectory("c:\\dmbf\\" & format(Date.now,"yyyy-MM-dd HHmmss") & "")
Dim fl As String="c:\\dmbf\\" & format(Date.now,"yyyy-MM-dd HHmmss") & ""
For Each r As Row In Tables("表A").Rows
    s.AppendLine(r("经历"))
    v = s.Tostring
    FileSys.WriteAllText( fl & "\\" & r("姓名") & ".txt", v, False, Encoding.Default)
Next

当前可以实现代码创建姓名的文件,并且写入经历内容。
但是会形成如下:
假设表A中有两条记录:
  姓名          经历
1张三   大学期间获得奖励
2李四   高中期间获得一等奖

生成的文本为下:
张三  大学期间获得奖励
李四  大学期间获得奖励 高中期间获得一等奖  ‘红色部分是张三的 不应该写入’

怎么修改代码 不让经历部分进行重复叠加呢?

--  作者:有点蓝
--  发布时间:2021/1/29 13:45:00
--  
For Each r As Row In Tables("表A").Rows
s.clear
    s.AppendLine(r("经历"))
    v = s.Tostring
    FileSys.WriteAllText( fl & "\\" & r("姓名") & ".txt", r("经历"), False, Encoding.Default)
Next

--  作者:cnsjroom
--  发布时间:2021/1/29 14:18:00
--  回复:(有点蓝)For Each r As Row In Tables("表A")...
谢谢 老师  
经过学习  下列两个方法都可以实现

方法一:
For Each r As Row In Tables("表A").Rows
    s.clear
    s.AppendLine(r("经历"))
    v = s.Tostring
    FileSys.WriteAllText( fl & "\\" & r("姓名") & ".txt", v, False, Encoding.Default)
Next

方法二:
For Each r As Row In Tables("表A").Rows
    FileSys.WriteAllText( fl & "\\" & r("姓名") & ".txt", r("经历"), False, Encoding.Default)
Next
[此贴子已经被作者于2021/1/29 14:18:16编辑过]