问题标签 [writealltext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
911 浏览

silverlight - 不允许相同的文件操作。拒绝访问路径,Silverlight 5.0

我正在使用 silverlight 应用程序,File.WriteAllText 在尝试写入本地桌面时不允许执行文件操作。访问路径异常。此代码始终在本地桌面上运行,但在服务器上部署代码时会出错。

0 投票
3 回答
1380 浏览

c# - WriteAllText、字符编码、£ 和?

举个例子:

注意编码。第一个输出 ?100。第二个输出 100 英镑。

我知道编码不同,但有人可以解释为什么 ASCII 编码不能写 £ 符号吗?

0 投票
1 回答
53 浏览

c# - 根据内容将txt文件解析为多个单独的文件

我在创建最后一个文件时遇到问题。

我有一个制表符分隔的文本文件,看起来像这样。

基本上它是以 Word KABEL 开头的一行,后跟许多制表符分隔的列。该行之后是一些以单词 PART 开头的行。以 PART 开头的行数可以不同。

现在我想把这个文件分解成几个文件。

每个已解析文件的名称都应包含来自以 KABEL 开头的行的某一列的信息。在该文件中,应添加以 PART 开头的每一行。

然后,当再次出现以 KABEL 开头的行时,将创建一个新文件,并将 PART 行添加到该文件中......等等......等等。

我来回尝试了很多,最终找到了一种正确创建前两个文件的方法......但是......最后一个文件不会被创建。

我的脚本读取并找到并显示应该是最后解析的输出文件的唯一部分的正确列,但我没有看到任何文件正在输出。

有接盘侠吗?我会非常感谢你的帮助,因为我被困住了......

提前致谢

托马斯

0 投票
1 回答
48 浏览

c# - 文件保存位置并不总是更新

我正在使用FolderBrowserDialog让用户选择一个位置来保存文件和/或创建一个新文件夹。它在 99% 的时间都在工作,但是在某些情况下,当用户单击“创建新文件夹”按钮,更改名称,然后单击“确定”时,将抛出“新文件夹”不存在的异常。

即使用户将其重命名,代码似乎仍在寻找名称为“新文件夹”的文件夹。我可以在代码中进行哪些更改来处理此问题,以便文件始终保存在用户选择的文件夹中?

0 投票
1 回答
379 浏览

c# - 在计算机崩溃时调用 File.WriteAllText 会导致数据丢失

我有以下代码来保存数据:

我的程序每 15 秒执行一次。data.txt 的大小约为 9 MB。

有时当我的计算机崩溃然后重新启动后,我发现 data.txt 充满了 NULL 字符,而它的大小仍然保持在 9 MB 左右。这就是为什么我添加了 data_backup.txt 行但它没有帮助,因为它也保存了充满 NULL 的文件。

请注意,这不会发生在每台计算机上,但显然只有在执行此代码时崩溃时才会发生。

我在我的 RAM 上使用 XMP 配置文件时遇到了这种行为,该配置文件不稳定并且不时导致崩溃。在 XMR 配置文件不稳定的两台不同计算机上,情况完全相同。我在停电时也经历过。

我知道我不能指望崩溃的计算机完美地执行所有代码然后才崩溃。但是,我可以使用任何技巧来防止在计算机崩溃之前或之前写入或保存的文件内容丢失吗?定期将这些变量保存到文件中的全部目的是为了防止在计算机崩溃的情况下丢失数据,但显然这种方法并不总是有效。

0 投票
2 回答
1040 浏览

c# - 使用 513 个空格字符在 C# 中将文本写入文件

这是将字符串写入文件的代码

它基本上是字符“P”,后跟总共 513 个空格字符。

当我在 Notepad++ 中打开文件时,它似乎很好。但是,当我在 Windows 记事本中打开时,我看到的只是乱码。

如果我添加 514 或 512 而不是 513 空格字符,它会在记事本中正常打开。

我错过了什么?

0 投票
0 回答
50 浏览

c# - 从 C#/.NET 正确编辑文本或源文件

从代码编辑文本或源文件的典型方法是使用 File.ReadAllLines 或 File.ReadAllText 读取文件,进行更改,然后使用 WriteAllLines 或 WriteAllText 将其写出。

但是,如果您要在 Visual Studio 或 Notepad++ 中打开文本文件(比如一些源代码文件),向下滚动几行,进行更改并保存,会处理更多内容。

似乎至少在 Windows 上处理的是一组复杂的规则和启发式方法,至少考虑到:

  1. 文本文件的推断编码。
  2. 行尾
  3. 最后一行是否为“不完整行”(如 diffutils/manual 中所述,即没有行尾字符的行)

我将部分讨论这些只是为了说明复杂性。我的问题是,是否有一套完整的启发式方法、可以使用的已经建立的算法或封装它的现有组件。

推断编码

最常见的源/文本文件:

  1. 带有 BOM 的 UTF-16
  2. 带有 BOM 的 UTF-8
  3. 无 BOM 的 UTF-8

当没有 BOM 时,使用一些启发式方法推断编码。它可能是 ASCII 或 Windows1252 (Encoding.GetEncoding(1252)),或 BOMless UTF-8 这取决于其余数据的样子。如果有一些已知的上 ascii 或可能看起来 UTF-8 的东西。

保存时,需要保持相同的编码。

行尾

您必须保持相同的行尾。因此,如果文件使用 CR/LF,则将其保留在 CR/LF。但是当它只是LF时,请保留它。但它可能会变得更复杂,因为给定的文本文件可能两者都有,并且还需要维护它。例如,一个 CR/LF 的源文件可能在其中有一个只有 LF 行结束的部分。当有人将文本从另一个工具粘贴到文字多行字符串(例如 C# 的 @"" 字符串时,就会发生这种情况。Visual Studio 可以正确处理这个问题。

不完整的行

如果最后一行不完整,则也必须保留。这意味着,如果最后一行不以行尾字符结尾

可能的方法

我认为从一开始就解决所有这些问题的一种方法是将文件视为二进制而不是文本。这意味着无法使用 .NET 中的正常文本文件处理。将需要一组新的 API 来处理编辑此类文件。

我可以对一个组件进行映像,该组件需要您将文件作为内存流打开并将其传递给组件。然后组件可以读取流并向客户端提供面向行的视图,以便客户端代码可以遍历行进行处理。通过迭代的每个元素都将是一个看起来像这样的类型的对象:

以 Windows 上的普通文本文件为例:

  • originalLineNumber 将为 1
  • 行将是一个包含文件第一行的一维数组,没有行尾
  • lineEndings[0] 将是“\x0D\x0A”

lines字段可以修改。可以替换为空数组来删除行,也可以替换为多元素数组来插入行(替换现有行)

lineEndings数组处理类似。

在许多情况下,不会删除或插入新行,在这种情况下,应用程序代码根本不需要处理行尾。它们只是对 lines[] 数组进行操作,而忽略 lineEndings[] 数组。

我愿意接受其他建议。

0 投票
3 回答
54 浏览

c# - WriteAllText 方法返回最后一行,而不是文件的整行

我有一个代码:

  • 读取文本文件,
  • 用“;”替换所有“空格”,
  • 删除重复的字符“;”
  • 并保存一个包含所有更改的新文件。

但不是写入文件中的所有行,而是只写入最后一行。

文本文件:

代码后的文本文件:

有人可以帮我解决这些吗?提前致谢!

0 投票
1 回答
56 浏览

c# - 保存对通过下拉列表打开的文件的更改

所以我在让我的代码工作方面得到了帮助,结果发现我的 Combobox 控件中缺少一些东西。

我想要实现的目标: 我通过下拉列表选择一个文件,一旦选择,我RichTextBox将显示整个文件的内容。我希望能够在这里更改一行,使用RichTextBox,然后我有一个Save按钮,一旦我单击此按钮,我希望我的更改保存到我通过下拉列表选择的文件中。

到目前为止我的代码:

这是我无法正常工作的部分

我不知道如何保存我想要的更改。我要进行的更改只是配置文件中的这一行:

并将其更改为

反之亦然。然后按原样保存文件。