如何访问VB项目中创建的文件夹中的txt文件

时间:2015-12-22 09:27:54

标签: vb.net file visual-studio-2013 streamreader

我正在为Quiz App创建一个VB项目(在VS 2013中)。所以我在项目中有一些预设问题(我在项目中创建了一个文件夹,并添加了一个文本文件)。

我的问题是如何读取和写入该文件的内容?或者,如果没有办法在安装应用程序时将该txt文件复制到Documents/MyAppname,以便我可以从该位置进行编辑?

2 个答案:

答案 0 :(得分:1)

在下面的示例中,我专注于访问可执行文件夹下的一个文件夹,而不是其他文件夹中的文件。如果文件存在,则读取文件,然后根据每行上面或下面的第一个字符行,然后将数据保存回同一文件。当然,有很多方法可以处理文件,但这只是一个。

以下内容在解决方案资源管理器的项目文件夹中创建了一个名为Files的文件夹,添加到文本文件,textfile1.txt和textfile2.txt。在每个行中放置几个​​非空行,每行以一个字符开头。每个文本文件,在解决方案资源管理器下的属性中设置复制到输出目录为"如果更新则复制"。

希望这与你想要的一致。由于我没有使用ClickOnce来验证这一点,它可能会或可能不会按预期通过ClickOnce工作。

在表单中,带有以下代码的一个按钮。

Public Class Form1
    Private TextFilePath As String =
        IO.Path.Combine(
            AppDomain.CurrentDomain.BaseDirectory, "Files")
    Private TextFiles As New List(Of String) From
        {
            "TextFile1.txt",
            "TextFile2.txt",
            "TextFile3.txt"
        }
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim FileName As String = ""
        ' loop thru each file
        For Each fileBaseName As String In TextFiles
            FileName = IO.Path.Combine(TextFilePath, fileBaseName)
            ' only access file if it exist currently
            If IO.File.Exists(FileName) Then
                ' read file into string array
                Dim contents As String() = IO.File.ReadAllLines(FileName)
                ' upper or lower case line based on first char.
                ' this means you can flip flop on each click on the button
                For x As Integer = 0 To contents.Count - 1
                    If Char.IsUpper(CChar(contents(x))) Then
                        contents(x) = contents(x).ToLower
                    Else
                        contents(x) = contents(x).ToUpper
                    End If
                Next
                ' save changes, being pesstimistic so we use a try-catch
                Try
                    IO.File.WriteAllLines(FileName, contents)
                Catch ex As Exception
                    Console.WriteLine("Attempted to save {0} failed. Error: {1}",
                                      FileName,
                                      ex.Message)
                End Try

            Else
                Console.WriteLine("Does not exists {0}", FileName)
            End If
        Next
    End Sub
End Class

答案 1 :(得分:0)

这可以帮助您

Dim objStreamReader As StreamReader
    Dim strLine As String

    'Pass the file path and the file name to the StreamReader constructor.
    objStreamReader = New StreamReader("C:\Boot.ini")

    'Read the first line of text.
    strLine = objStreamReader.ReadLine

    'Continue to read until you reach the end of the file.
    Do While Not strLine Is Nothing

      'Write the line to the Console window.
      Console.WriteLine(strLine)

      'Read the next line.
      strLine = objStreamReader.ReadLine
    Loop

    'Close the file.
    objStreamReader.Close()

    Console.ReadLine()

您还可以查看this链接。