新手关于VB.net的问题您好,在Visual Basic.NET中 , 是没有像这样的文件I/O操作的,一般都是通过System.IO.StreamReader和System.IO.StreamWriter类,System.IO.BinaryReader和System.IO.BinaryWriter类来读写文件以及利用My.Computer.FileSystem类读写文件 , 利用System.IO.Filestream类来创建文件,通过引用Microsoft Scripting Runtime来执行文件(夹)和驱动器的特殊操作,常用的是System.IO.StreamReader和System.IO.StreamWriter类 。
例如说要读取一个文件,我们可以利用System.IO.StreamReader类编写一个方法(也就是函数),但是首先要在当前类的开头添加一个引用,引用名称:System.IO , 添加引用的代码如下
Imports System.IO
添加引用之后 , 就在当前类的内部创建方法:
Private Function ReadFile(ByVal FileURL As String) As String
Dim sr As StreamReader = New StreamReader(FileURL)
ReadFile = sr.ReadToEnd()
sr.Close()
sr = Nothing
End Function
示例说明:
该方法是一个返回String(字符串)数据的函数,FileURL作为参数是用来存放需要访问的文件的URL,当然,要获取一个文件的URL , 就是利用这一句代码实现的:
Dim sr As StreamReader = New StreamReader(FileURL)
当获取了URL之后,就要对文件进行读取操作了 , 然后将读取的结果返回给方法:
ReadFile = sr.ReadToEnd()
读取文件完毕之后 , 要对文件执行关闭操作:
sr.Close()
当然别忘了清理资源:
sr = Nothing
StreamReader类可以从流或文件中读取字符,在创建StreamREader类的对象时,可以指定一个流对象,也可以指定一个文件URL,创建对象后就可以调用他的方法,从流中读取数据 , 其常用方法如下:
Peek:返回下一个可用字符 , 但不使用它 。
Read:读取输入流中下一个字符或一组字符并移动流或文件指针 。
ReadBlock:从当前流中读取最大数量字符并从index开始将数据写入buffer 。
ReadLine:从当前流中读取一行字符并将字符作为String返回 。
REadToEnd:从流的当前位置到末尾读取流 。
Close:关闭打开的对象,释放资源 。
注:流 , 一种新的数据格式,这种格式可通过System.IO命名空间下的类访问 。流用Stream类表示,所有的流都是从这个类中继承的 。流向用户提供了一个一般的数据视图,隐藏了操作系统和底层设备的实现细节,所有的流都支持读写操作 。在打开文件时将返回对应的流对象,用户可以对流对象进行读写操作 。
如果要对文件执行按行读取操作,这时就会用到枚举,这时候,代码就要更改一下了:
Private Function ReadFile(ByVal FileURL As String) As String
Dim sr As StreamReader = New StreamReader(FileURL)
For Each fLine As String In sr.ReadToEnd()
Line = sr.ReadLine()
ReadFile = ReadFilefLine
Next sr.ReadLine
sr.Close()
End Function
示例说明:
For Each…Next:派生于For…Next循环,用于枚举一系列对象中的成员,而这些对象组成集合,如果集合中至少存在一个元素,程序就会静茹For Each块执行 。其格式如下:
For Each 元素 [As 数据类型] In 元素集合
[循环体]
[Exit For]
[循环体]
Next [元素]
比如:
Dim CountNumber As ULong = 0
Dim FolderName() As String = New String() {" "}
For Each strFolder As String In My.Computer.FileSystem.GetDirectories("C:\")
CountNumber = CountNumber1
ReDim Preserve FolderName(1 To CountNumber)
FolderName = strFolder
Next strFolder
【vb.net顺序文件 vb顺序排序代码】注:My.Computer.FileSystem.GetDirectories:主要用来枚举指定目录的子文件夹 。
Preserve:主要用来避免重定义数组而不损失数组元素的原有数据 。
另外 , 利用My.Computer.FileSystem也可以实现文件的读?。浯肴缦拢?
Dim fpReader As String = My.Computer.FileSystem.ReadAllText("C:\test.txt")
示例说明:
定义一个字符串变量利用My.Computer.FileSystem.ReadAllText来实现对“C:\test.txt”的读取 。
如果是已经编码的文本,则可以使用My.Computer.FileSystem对象中的ReadAllText方法并提供路径和文件编码类型,将文本写入字符串变量中,例如:
Dim fpReader As String = My.Computer.FileSystem.ReadAllText("C:\test.txt", _
System.Text.Encoding.UTF32)
当然 , System.Text.Encoding的成员不止一个,它还有如下成员:
System.Text.Encoding.UTF8
System.Text.Encoding.UTF16
System.Text.Encoding.ASCII
System.Text.Encoding.Unicode
这些是常见的成员,也是主要的成员 。
另外,利用My.Computer.Filesystem类无法实现文件的行操作,还有,如果您的计算机未安装完整的Microsoft.NET Framework Runtime,则无法实现这种操作!
写入文件的操作同样简单 , Visual Basic.NET 允许用户使用StreamWriter来对文件写入内容,下面就让我们来创建一个子例程,来实现文件的写入:
Private Sub WriterFile(ByVal FileURL As String, ByVal FileCon As String)
Dim sr As StreamWriter = New StreamWriter(FileURL)
sr.Write(FileCon)
sr.Close()
sr = Nothing
End Sub
示例说明:
sr.Write(FileCon):将FileCon写入文件FileURL之中 。
另外,StreamWriter常用方法如下:
WriteLine:向流中写入一行,后面跟结束符 。
Write:写入流,向流对象中写入字符并移动流或文件指针 。
Close:关闭打开的对象 , 释放资源 。
附:Visual Basic 6.0文件操作解说:
打开: Open 文件名 For Input | Output | Append As [#]文件号
Input打开读入,文件不存在报错 。Output打开覆盖写入,文件不存在则创建 。Append打 开追加写入,文件不存在则创建 。
读: Line Input #文件号, 字符串变量
读一行数据存入字符串变量,数据包括空格、Tab、等,不包括回车符和换行符,所以要显示文件的换行效果,要手动添加回车符和换行符(vbCrLf)
Input #文件号, 变量1[, | ;] [变量2]...
这种方式可以存入多个变量,而且变量类型不限于字符串型 。
写: Print #文件号, 参数1[, | ;] [参数2]...
将各参数逐个写入文件 。参数间用逗号隔开时,文件中相应插入多个空格;用分号隔开时,插入一个空格 。可以用Spc(n)、Tab(n)等进行排版 。
Write #文件号, 参数1[, | ;] [参数2]...
这种写入方式将自动添加界定符,对不同参数的类型加以界定 。
Visual Basic 6.0文件操作函数:
Seek: Seek(文件号)
返回文件正在访问的位置,返回值为长整型 。对顺序文件和二进制文件,返回值以字节为单位;对随机访问文件,返回值以记录号为单位 。
Seek: Seek [#]文件号,位置
定位文件到指定位置 。位置单位同上所述 。
Input: Input (字节数 , [#]文件号)
从文件的访问当前位置读入指定字节数的数据 。仅适用于顺序文件和二进制文件 。
EOF: EOF(文件号)
判断文件的访问位置是否在文件尾,如果是 , 返回True,否则 , 返回False 。
LOF: LOF(文件号)
返回文件长度,单位为字节 。
FileLen: FileLen (文件名)
返回文件名对应文件的长度 , 单位是字节 。该函数取磁盘文件标识中的长度,即文件打开前的长度,可以取未打开的文件长度 。
GetAttr: GetAttr (Pathname)
返回指定文件或文件夹的属性 。
FileAttr: FileAttr (文件号)
返回文件号对应文件的打开方式 。
GetDateTime: GetDateTime (Pathname)
返回文件被创建或修改的最后日期和时间 。
Free: FreeFile[(0|1)]
返回未被占用的文件号 , Free或Free(0)返回1~255之间未占用的文件号,Free(1)返回256~511之间未占用的文件 。
Dir: Dir (Pathname [,Attributes])
测试指定路径是否有某文件 , Attributes附加文件属性条件,取值vbNormal、vbReadOnly、vbHidden、vbSystem、vbVolume、vbDirectory 。
Kill: Kill (文件名)
删除指定文件,文件名可包含路径 。
FileCopy: FileCopy 源文件,目标文件
拷贝文件 。
Name: Name 旧文件名 As 新文件名
文件重命名 。前后路径不一致时,操作为移动文件并重命名 。
MkDir: MkDir path
新建文件夹 。
RmDir: Rmdir path
删除文件夹 。
ChDrive: ChDrive Drive
改变当前驱动器 ChDrive "D"
CurDir: CurDir [(driver)]
返回当前工作路径,指定driver则返回目标驱动器的当前工作路径 。
举例:
'新建文件,并写入数据 , 关闭
Open "a.txt" For Output As #1
Print #1, "ABCDEFG"; vbCrLf; "HIJK"
Close #1
'打开文件,并全部写入新文件,关闭
Open "a.txt" For Input As #2
Open "b.txt" For Output As #3
Dim str As String
While (Not EOF(2))
Line Input #2, str
Print #3, str
Wend
Close
注:关于Visual Basic 6.0的文件操作资料来自于
如果您觉得我的回答帮助了您解决难题,别忘了采纳哦,如果我的回答未能解决您的问题 , 您可以在互联网上寻找更多的解决方案!
VB.net 数组怎么按任意元素的顺序排序输出你直接传一个数组进去,而且是一个结构体数组,array.sort怎么知道根据结构中的哪一个属性进行排序?放一个c#的代码你看看,VB和C#很相似的
class Program
{
static void Main(string[] args)
{
People[] p = new People[3]
{
new People{name="张三"},
new People{name="李四"},
new People{name="张二名"}
};
//重点传一个实现了IComparer接口的类进去,告诉Array.Sort怎么排序
Array.Sort(p, new PeopleCompare());
foreach (var item in p)
{
Console.WriteLine(item.name);
}
Console.ReadKey();
}
}
//People结构体,换成类一样的
public struct People
{
public string name { get; set; }
}
//实现了IComparer接口的类
public class PeopleCompare : IComparer
{
public int Compare(object x, object y)
{
People p1 = (People)x ;
People p2 = (People)y;
return p1.name.CompareTo(p2.name);
}
}
vb.net 磁盘文件列表,界面如图,在.net下如何实现?预先准备三个图标文件,用于树型控件中显示磁盘符号和文件夹的图像之用 。
1、窗体上添加控件如下:
组合框控件 ComboBox1,树型控件 TreeView1,列表框控件 ListBox1,图像列表控件 ImageList1 。
选中TreeView1,设置其ImageList属性为ImageList1 。
2、设置属性
选中图像列表控件 ImageList1,在属性窗口里,选中属性Images,单击三个小点按钮,出现图像集合编辑器窗口,单击[添加按钮],一一把准备好的图标文件进行添加,注意先后次序,如果不符合要求可以通过上下移动按钮重新改变次序 。完成后单击[确定] 。
运行图如下:
完整代码如下:
Imports System.IO
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'添加系统所有磁盘目录符号
For Each MyDrive As String In Environment.GetLogicalDrives()
ComboBox1.Items.Add(MyDrive)
Next
'显示第一个磁盘符号
ComboBox1.Text = ComboBox1.Items(0)
End Sub
'递归过程添加目录树
Public Sub AddDirectory(ByVal strFatherPath As String, ByVal strPath As String, ByVal nodeFather As TreeNode)
Dim i As Integer
Dim Mynode As New TreeNode
'先添加本目录
Mynode.Text = Strings.Replace(strPath, strFatherPath"\", "", , 1)
'为节点指定未被选中时显示的图标
Mynode.ImageIndex = 1
'为节点指定被选中时显示的图标
Mynode.SelectedImageIndex = 2
nodeFather.Nodes.Add(Mynode)
Application.DoEvents()
Try
Dim str() As String = Directory.GetDirectories(strPath)
'递归遍历该目录的子文件夹
For i = 0 To str.GetUpperBound(0)
AddDirectory(strPath, str(i), Mynode)
Next
Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
Mynode = Nothing
End Sub
'根据给出的盘符添加目录树
Private Sub AddRootDirectory(ByVal DiscSymbol As String)
Dim Nynode As New TreeNode
'先把磁盘盘符添加到树中
TreeView1.Nodes.Clear()
Nynode.ImageIndex = 0
Nynode.Text = DiscSymbol
Nynode.SelectedImageIndex = -1
TreeView1.Nodes.Add(Nynode)
Dim i As Integer
'获取磁盘根目录下的文件夹
Dim str() As String = Directory.GetDirectories(DiscSymbol"\")
For i = 0 To str.GetUpperBound(0)
'调用递归过程遍历该文件夹里的所有子文件夹,并添加到树型控件
AddDirectory(DiscSymbol, str(i), Nynode)
Next
Nynode = Nothing
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
'根据磁盘符号的变更,显示根目录里的文件
ListBox1.Items.Clear()
For Each MyFile As String In System.IO.Directory.GetFiles(ComboBox1.Text)
ListBox1.Items.Add(MyFile)
Next
'根据磁盘符号的变更,重新显示目录树
Dim DiscSymbol As String
DiscSymbol = Microsoft.VisualBasic.Left(ComboBox1.Text, Len(ComboBox1.Text) - 1)
Call AddRootDirectory(DiscSymbol)
End Sub
'递归过程根据子目录寻找上级目录名--从而构成完整的目录路径
Private Sub AllPath(ByVal ThisNode As TreeNode, ByRef MyPathName As String)
If ThisNode.Level1 Then
'该节点层数大于1,其父节点不是磁盘根目录
MyPathName = ThisNode.Parent.Text"\"MyPathName
Dim MyNode As TreeNode = ThisNode.Parent
Call AllPath(MyNode, MyPathName)
Else
'该节点层数等于1,其父节点就是磁盘根目录
MyPathName = ComboBox1.TextMyPathName
End If
End Sub
Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
'为了搜索选中的节点对应目录的文件,需要组成全路径
Dim MyAllPathName As String = TreeView1.SelectedNode.Text
Dim MyNode As TreeNode = TreeView1.SelectedNode
If TreeView1.SelectedNode.Level = 0 Then
'如果选中的是根节点
MyAllPathName = ComboBox1.Text
Else
'如果选中的是非根节点,调用递归过程组成全路径
Call AllPath(MyNode, MyAllPathName)
MyAllPathName = MyAllPathName"\"
End If
'根据路径,搜索文件名并显示
ListBox1.Items.Clear()
For Each MyFile As String In System.IO.Directory.GetFiles(MyAllPathName)
ListBox1.Items.Add(MyFile)
Next
End Sub
End Class
VB.net如何设置程序运行时最先打开的窗体?你是不是用的Visual Studio来开发的?如果是,这样操作:打开 项目 菜单 中的 XXX属性,在弹出的属性页选择最上面那个 应用程序 标签,里面有个启动窗体,你选择一下就可以了 。
如果你不是用的visual Studio来开发的 , 那么可以考虑把另外一个窗口的visible属性先设置为false或者把你要显示的窗口改为对话框的形式,大小比另外一个窗口大一点或者一样(即 模态窗口,必须关闭才能继续操作),这样都可以实现你要的效果 。
vb.net单击按钮产生100个3位随机正整数,保存为一个顺序文件 , vb.net,在线等,挺急的Imports System.IO
Public Class Form1
Dim strFilePath As String = "C:\1.txt"
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As New Random
Dim sw As StreamWriter = New StreamWriter(strFilePath, False)
Randomize()
For i = 1 To 100
sw.WriteLine(a.Next(100, 999))
sw.Flush()
Next
sw.Close()
sw = Nothing
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim sr As StreamReader = New StreamReader(strFilePath)
For i = 1 To 100
Dim a As Integer = Convert.ToInt16(sr.ReadLine)
If a Mod 2 = 1 Then
ListBox1.Items.Add(a.ToString)
End If
Next
sr.Close()
sr = Nothing
End Sub
End Class
VB.net 中一个form中有多个textbox , 怎样把输入的数据按顺序保存到txt文件中并能打开文件System.IO.File.WriteAllText("C:\文件保存路径\我的文件.txt", TextBox1.TextvbNewLineTextBox2.TextvbNewLineTextBox3.TextvbNewLineTextBox4.TextvbNewLineTextBox5.TextvbNewLineTextBox6.Text)
如果要加上标签的话,就在textbox1.text的前面加上label1.text
label1.textTextBox1.TextvbNewLinelabel2.textTextBox2.Text。。。。以此类推
关于vb.net顺序文件和vb顺序排序代码的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 芭比益智游戏,芭比游戏视频
- 公众号文章点击拨号,公众号引导页怎么弹出电话拨号
- 自愿填表小程序怎么填,如何填写自愿
- 广州直播设备租借,直播设备租赁
- python固有函数 python中的固定数据类型
- js实现oberve,js enumerator
- python查找txt内相同字符的简单介绍
- 还cpu要注意什么,cpu需要更新嘛
- c语言输入任意键函数 c语言按任意键