【问题标题】:Reading from a local text file into C#? [closed]从本地文本文件读入 C#? [关闭]
【发布时间】:2013-10-28 16:52:11
【问题描述】:

我已经搜索并只找到了控制台的此信息,但我想知道是否可以将本地计算机上的文件中的文本读入代码、格式化并显示在屏幕上?我们有一个包含一些可以定期更新的法律术语的文本文件,我们不想让用户筛选代码,而是希望只更新文本文件并在线应用更改。

谢谢!

编辑:感谢大家的cmets,这里是一个带有要求的编辑。该程序位于 C# ASP.NET 网站中。我已经阅读了很多关于在控制台中完成此操作的文章,但我不知道如何让它为我工作。再次感谢大家的贡献。

【问题讨论】:

  • 你试过什么?你有什么问题?你问如何读取文件?如何操作字符串?如何使用TextBox
  • 你看到google.com/search?q=C%23+read+file的第一个结果了吗?
  • 感谢您的链接。我想知道这是否仅适用于控制台,或者也可以在 .NET 中完成?当我在我的代码中运行时,它似乎不起作用。
  • System.IO.File 可用于任何类型的 .NET 项目。
  • 这个完全可以,但是你这里的要求太模糊了。例如,控制台应用程序可以用 .NET 编写。您是指 ASP.NET 网站吗?如果是这样,诀窍就是让您的站点中的一些代码隐藏文件与您看到的控制台代码执行相同的工作,而不是将内容写入控制台窗口,而是将内容写入正在呈现的页面中使用某种控制(如标签或文本框)。

标签: c# asp.net


【解决方案1】:

这里有两种在 .Net 中工作的方法

var legal = File.ReadAllText(@"C:\Legal\Legalease.txt");

// Or from the CWD of where the program is executing

var legal = File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "Legalease.txt"));

更新

请记住,Asp.Net 是以 IIS 应用程序池中定义的用户身份运行的该网站。如果用户对文件所在的位置没有读取权限,则无法读取该文件。确保网站应用程序池中定义的用户有权读取文件并验证文件已发布到读取位置。

【讨论】:

  • 谢谢!我在 Visual Studio 的项目文件夹中有 legal.txt 文件,但是当我更改文件名时,它仍然给我一个错误提示“找不到文件 'C:\Windows\SysWOW64\inetsrv\legal.txt'”我是使用top方法还是bottom方法。
  • @Peter 你说文件在你的项目中,但是它是如何被复制到 inetsrv 目录的? asp.net 进程也有从 inetsrv 目录读取的权限吗?我建议您在网站中包含 legal.txt 文件并在本地阅读。不要忘记将Copy to Output Directory项目中的file属性改成Copy if Newer
  • StreamReader 是另一种非常快的方式。
  • @StingyJack StreamReader 没有错,它提供了更多的操作控制。为 OP 提供一个示例。 :-)
  • 是的,请!谢谢你们!我知道这很简单。解决方案中的文本文件,代码读取它,然后显示它。但由于某种原因,我遇到了这些问题。再次感谢!
【解决方案2】:

您拥有完整的程序 (ASP.net)。您的 ASP.net 应用程序中的 App_Data 文件夹中必须有一个文件,在此应用程序中,您的文件名 "Details.txt" 应该在您的 App_Data 文件夹中可用。

您的网页中有隐藏字段和可用段落。当表单加载时,此时从文本文件中读取数据并填充到隐藏字段控件。并在$(document).ready() Jquery 函数中将数据从隐藏字段填充到段落。

您的.aspx 页面:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="ReadFromTextFileToTextBoxWebApp._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
  <style type="text/css" >
   .details
   {
       background-color:Purple;color:yellow;top: 100px;
   }
   .txtDetails
   {
       left:150px;width:200px;height:100px;
   }
  </style>
  <script src="Scripts/jquery-1.8.3.min.js" type="text/javascript"></script>
  <script type="text/javascript" language="javascript">
      $(document).ready(function () {
          var data = $("#<%=HiddenField1.ClientID %>").val();
          $('#pTextData').text(data);
      });

</script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>
        Welcome to ASP.NET!
    </h2>
     <div>
        <asp:HiddenField ID="HiddenField1" runat="server" />
        <p id="pTextData">
        </p>
     </div>
</asp:Content>

这是您的页面背后的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

namespace ReadFromTextFileToTextBoxWebApp
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var data = File.ReadAllText(Server.MapPath("~/App_Data/Details.txt"));
            HiddenField1.Value = data.ToString();   
        }           
    }
}

【讨论】:

  • 太棒了!最后一个问题。可以格式化吗?它可能只需要在段落中,但是为阅读的文本设置样式的最佳方式是什么?
  • 是的,彼得,就像我在文本框中显示的一样。你可以用其他控件做同样的事情。看,如果您问我哪个是显示数据的最佳控件(如果您的数据是只读的 - 意味着您不会编辑数据),那么最好使用标签控件。添加一个 css 类并为该标签控件设置样式。如果您得到了答案,请勾选它以标记为已回答。
  • 谢谢,但是如何将文本格式化成段落?
  • 我只是想告诉你。看,如果你想编辑数据,那么最好使用具有漂亮 css 外观的文本框,为什么我告诉你使用服务器控件,因为与简单的静态 html 控件相比,服务器控件有更多好处。您可以为服务器控件应用 javascript 以及服务器端代码,服务器端代码(例如要存储在 db/xml 中的数据或提供给 Web 服务...等...等)如果您希望数据位于 html 段落中

    然后您可以在表单加载时进行 ajax GET 调用并将数据绑定到您的段落。

  • @Alex 很高兴它帮到了你。
猜你喜欢
  • 1970-01-01
  • 2017-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-30
  • 2012-02-17
  • 2013-12-11
  • 1970-01-01
相关资源
最近更新 更多