【问题标题】:Choosing a random ints from a txt file in c# windows forms app在 c# windows forms app 中从 txt 文件中选择一个随机整数
【发布时间】:2018-12-06 13:33:17
【问题描述】:

我是这里的新手,所以如果我犯了错误,我会道歉。现在我有一个程序,它从一个包含一百万位数字 Pi 的文本文件中获取一个随机整数。长度也是随机的,但不应超过 128 位。我找了很多,但我找到了这段代码,它使我的计算机因 cpu 使用率为 %100 而冻结。

string[] allLines = File.ReadAllLines(Application.StartupPath+ "\\pi.txt");
        Random rnd1 = new Random();
        textBox2.Text=(allLines[rnd1.Next(allLines.Length)]);

当我得到随机整数时,我需要将它打印到 textBox2 的文本中。 作为一个菜鸟,我非常抱歉。

【问题讨论】:

  • 很抱歉,我不明白您的问题是什么。什么不工作?
  • 电脑卡住了,没有打印出我想要的随机值
  • 它没有卡住,至少在您提供的代码中没有卡住。文件有多大?
  • 它打印出什么? “卡住”是什么意思?你说得太模糊了。 究竟发生了什么?就像字面意思一样,发生了什么?
  • 你试过调试它吗?单步执行代码并观察它实际在做什么,观察变量中的值?

标签: c# int


【解决方案1】:

您正试图仅删除几个字节的所有文件。考虑下面的解决方案。

请注意,我没有包含 Random 方法。

byte[] byteArray = new byte[10];
var file = 'path/to/your/file';
using (BinaryReader reader = new BinaryReader(new FileStream(file, FileMode.Open)))
{
    reader.BaseStream.Seek(<startingPosition>, SeekOrigin.Begin);
    reader.Read(byteArray, 0, <numberOfLinesToRead>);
}

string result = System.Text.Encoding.UTF8.GetString(byteArray);

【讨论】:

  • 所以我认为这个转换为字节以使其具有性能?但是先生,我在哪里把文件位置放在这段代码中?
  • new FileStream(file, FileMode.Open) - file 参数是你的路径
  • 这不是我的反对票:) 哎呀,因为我的声誉,我什至不能投票:D
  • 嗯,我没有得到 seekToPosition 部分,
  • 好的,非常感谢 Simonare 和其他提供帮助的好心人。:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-08
  • 2020-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
相关资源
最近更新 更多