请高手看看C#代码,总共1000行字符串,为啥取余后的几行字符串,写不进生成的txt文件里呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请高手看看C#代码,总共1000行字符串,为啥取余后的几行字符串,写不进生成的txt文件里呢?相关的知识,希望对你有一定的参考价值。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication1

class Program

static void Main(string[] args)

Random random = new Random();
List<string> allLines = new List<string>(File.ReadAllLines("f:\\log.txt"));

int x; int h = 1000;

x = random.Next(1,11);

int z = h / x;
int y = h % x;
for (int p = 1; p <= x; p++)

FileStream txtnew1 = new FileStream("f:\\test\\log" + p + " .txt", FileMode.OpenOrCreate);
StreamWriter swnew1 = new StreamWriter(txtnew1);
for (int a = 1; a <= z; a++)


int rd = random.Next(allLines.Count);
swnew1.WriteLine(allLines[rd]);
allLines.RemoveAt(rd);
File.WriteAllLines("f:\\log.txt", allLines.ToArray());

swnew1.Close();


for (int b = 1; b <= y; b++)

FileStream txtnew2 = new FileStream("f:\\test\\log" + b + " .txt", FileMode.OpenOrCreate);
StreamWriter swnew2 = new StreamWriter(txtnew2);
int rd = random.Next(allLines.Count);
swnew2.WriteLine(allLines[rd]);
//allLines.RemoveAt(rd);
//File.WriteAllLines("f:\\log.txt", allLines.ToArray());
swnew2.Close();




参考技术A

除了程序写的有些长,没看出什么大问题

static void Main(string[] args)

    Random random = new Random();
    List<string> allLines = new List<string>(File.ReadAllLines("c:\\\\log.txt"));
    int x; int h = 1000;
    x = random.Next(1, 11);
    int z = h / x;
    int y = h % x;
    int count = 0;//count为累计写入计数
    int m = y;
    Console.WriteLine("x=0,z=1,y=2", x, z, y);
    for (int p = 1; p <= x; p++)
    
        FileStream txtnew1 = new FileStream("c:\\\\test\\\\log" + p + ".txt", FileMode.OpenOrCreate);
        StreamWriter swnew1 = new StreamWriter(txtnew1);
        int n = (m > 0 ? 1 : 0);//是否仍有未写入的余数行
        int c = 0;
        for (int a = 1; a <= z+n; a++)
        
            int rd = random.Next(allLines.Count);
            swnew1.WriteLine(allLines[rd]);
            allLines.RemoveAt(rd);
            count++;
            c++;
        
        m--;
        swnew1.Close();
        txtnew1.Close();
        Console.WriteLine("0=1", p, c);//p为文件序号,c为每个文件行数
    
    //File.WriteAllLines("c:\\\\log.txt", allLines.ToArray());
    Console.WriteLine("==count=" + count);
    Console.ReadKey();

追问

我的意思是,我有一个1000行的txt文本,我要把这个文本里的1000行字符串先平均分给随机生成的X的几个txt文本里面,剩余的余数个行数再分别平均分配给这几个txt文本。举例来说就是,例如x=7的时候,1000行分到7个txt文本里,每个文本142行,那么还剩余6行,这6行再平均分配到这7个txt文本里!最后我想要得到的结果就是前6个txt是143行,最后一个txt是142行!

追答

你试下上面这个程序不就知道了。

参考技术B 你关闭FileStream 试试。读写文件结束后一般要关闭流swnew2 .Close();追问

我有swnew2 .Close();语句在最后的哇,我刚刚调试了,感觉就是内存一直被第一段循环写入的字符串占据后,最后这个循环生成的字符串添加到同一个txt文件里的时候,只是覆盖其中一行字符串,而并不是添加一行字符串!

请高手帮我看看下边的代码哪里错了, <?php include("conn.php"); $url=$_SERVER["REQUEST_URL"]; ?&

不能取到当前的地址,而且还报错
这是报出的错误:Notice: Undefined index: REQUEST_URL in D:\wamp\www\bbs\asd.php on line 13
Call Stack

许会发现下面列出的某些 $_SERVER 元素并不可用。注意,如果以命令行方式运行 PHP,下面列出的元素几乎没有有效的(或是没有任何实际意义的)。

“PHP_SELF”
当前正在执行脚本的文件名,与 document root 相关。举例来说,在 URL 地址为 http://example.com/test.php/foo.bar 的脚本中使用 $_SERVER['PHP_SELF'] 将会得到 /test.php/foo.bar 这个结果。__FILE__ 常量包含当前(例如包含)文件的绝对路径和文件名。

如果 PHP 以命令行方式运行,该变量在 PHP 4.3.0 之前无效。

“argv”
传递给该脚本的参数。当脚本运行在命令行方式时,argv 变量传递给程序 C 语言样式的命令行参数。当调用 GET 方法时,该变量包含请求的数据。

“argc”
包含传递给程序的命令行参数的个数(如果运行在命令行模式)。

“GATEWAY_INTERFACE”
服务器使用的 CGI 规范的版本。例如,“CGI/1.1”。

“SERVER_ADDR”
当前运行脚本所在的服务器的 IP 地址。

“SERVER_NAME”
当前运行脚本所在服务器主机的名称。如果该脚本运行在一个虚拟主机上,该名称是由那个虚拟主机所设置的值决定。

“SERVER_SOFTWARE”
服务器标识的字串,在响应请求时的头信息中给出。

“SERVER_PROTOCOL”
请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。

“REQUEST_METHOD”
访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。

注意: 如果请求的方式是 HEAD,PHP 脚本将在送出头信息后中止(这意味着在产生任何输出后,不再有输出缓冲)。

“REQUEST_TIME”
请求开始时的时间戳。从 PHP 5.1.0 起有效。

“QUERY_STRING”
查询(query)的字符串(URL 中第一个问号 ? 之后的内容)。

“DOCUMENT_ROOT”
当前运行脚本所在的文档根目录。在服务器配置文件中定义。

“HTTP_ACCEPT”
当前请求的 Accept: 头信息的内容。

“HTTP_ACCEPT_CHARSET”
当前请求的 Accept-Charset: 头信息的内容。例如:“iso-8859-1,*,utf-8”。

“HTTP_ACCEPT_ENCODING”
当前请求的 Accept-Encoding: 头信息的内容。例如:“gzip”。

“HTTP_ACCEPT_LANGUAGE”
当前请求的 Accept-Language: 头信息的内容。例如:“en”。

“HTTP_CONNECTION”
当前请求的 Connection: 头信息的内容。例如:“Keep-Alive”。

“HTTP_HOST”
当前请求的 Host: 头信息的内容。

“HTTP_REFERER”
链接到当前页面的前一页面的 URL 地址。不是所有的用户代理(浏览器)都会设置这个变量,而且有的还可以手工修改 HTTP_REFERER。因此,这个变量不总是真实正确的。

“HTTP_USER_AGENT”
当前请求的 User-Agent: 头信息的内容。该字符串表明了访问该页面的用户代理的信息。一个典型的例子是:Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)。也可以使用 get_browser() 得到此信息。

“HTTPS”
如果脚本是通过 HTTPS 协议被访问,则被设为一个非空的值。

“REMOTE_ADDR”
正在浏览当前页面用户的 IP 地址。

“REMOTE_HOST”
正在浏览当前页面用户的主机名。反向域名解析基于该用户的 REMOTE_ADDR。

注意: 必须配置 Web 服务器来建立此变量。例如 Apache 需要在 httpd.conf 中有 HostnameLookups On。参见 gethostbyaddr()。

“REMOTE_PORT”
用户连接到服务器时所使用的端口。

“SCRIPT_FILENAME”
当前执行脚本的绝对路径名。

注意: 如果脚本在 CLI 中被执行,作为相对路径,例如 file.php 或 ../file.php,$_SERVER['SCRIPT_FILENAME'] 将包含用户指定的相对路径。

“SERVER_ADMIN”
该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。

“SERVER_PORT”
服务器所使用的端口。默认为“80”。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口。

“SERVER_SIGNATURE”
包含服务器版本和虚拟主机名的字符串。

“PATH_TRANSLATED”
当前脚本所在文件系统(不是文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。

注意: PHP 4.3.2 之后,PATH_TRANSLATED 在 Apache 2 SAPI 模式下不再和 Apache 1 一样隐含赋值,而是若 Apache 不生成此值,PHP 便自己生成并将其值放入 SCRIPT_FILENAME 服务器常量中。这个修改遵守了 CGI 规范,PATH_TRANSLATED 仅在 PATH_INFO 被定义的条件下才存在。

Apache 2 用户可以使用 httpd.conf 中的 AcceptPathInfo On 来定义 PATH_INFO。

“SCRIPT_NAME”
包含当前脚本的路径。这在页面需要指向自己时非常有用。__FILE__ 包含当前文件的绝对路径和文件名(例如包含文件)。

“REQUEST_URI”
访问此页面所需的 URI。例如,“/index.html”。

“PHP_AUTH_DIGEST”
当作为 Apache 模块运行时,进行 HTTP Digest 认证的过程中,此变量被设置成客户端发送的“Authorization”HTTP 头内容(以便作进一步的认证操作)。

“PHP_AUTH_USER”
当 PHP 运行在 Apache 或 IIS(PHP 5 是 ISAPI)模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。

“PHP_AUTH_PW”
当 PHP 运行在 Apache 或 IIS(PHP 5 是 ISAPI)模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。

“AUTH_TYPE”
当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型。
参考技术A 不算大错误, 是 NOTICE 通知.
如果你不想看到这错误, 代码这样改:

<?php
include("conn.php");
$url=isset($_SERVER["REQUEST_URL"]) $_SERVER["REQUEST_URL"] : '';
?>
参考技术B 把conn文件发出来
$_SERVER['REQUEST_URI']这个变量你刚才打错了
这个是取你的文档路径

你要取ip
不是用这个变量
是:<?php
echo $_SERVER['REMOTE_ADDR'];//他才是取ip的
?>
参考技术C 你把$_SERVER["REQUEST_URI"] 里的 “I” 打成了 “L”,是REQUEST_URI 而不是REQUEST_URL。我也犯过这种错。 参考技术D REQUEST_URI

以上是关于请高手看看C#代码,总共1000行字符串,为啥取余后的几行字符串,写不进生成的txt文件里呢?的主要内容,如果未能解决你的问题,请参考以下文章

C#中将一个XML格式的字符串序列化成实体类 报DateTime类型错误 请高手指点一下

C#中类和命名空间是啥?为啥要用?啥时候用到?请高手详细说明

(使用此关键字需要 /clr:oldSyntax 命令行选项)各位C++高手,请帮帮帮小弟!!错在哪里,怎样改,为啥?

为啥我的c++命令行里只能输入中文不能输入英文,对于数字只能输出十六进制的,请高手帮帮忙,谢谢!!!

网页代码图片显示问题!请高手进来看看

请高手帮我看看下边的代码哪里错了, <?php include("conn.php"); $url=$_SERVER["REQUEST_URL"]; ?&