照旧用了20几秒的原因,对文件的读写

图片 4
ca88会员登录中心

最近需要对一个文件进行数量的分割,因为数据量庞大,所以就想到了通过写程序来处理。将代码贴出来以备以后使用。

  开始查资料以为是io读取的,磁盘速度慢的之类的,后来一想,text
又不是几十万条数据,才那么两千行,咋回事。

static public string Read(string path)
{
StreamReader sr = new StreamReader(path,Encoding.Default);
String line;
StringBuilder sb=new StringBuilder();
while ((line = sr.ReadLine()) != null)
{
sb.AppendLine(line);

//读取文件的内容 放置于StringBuilder 中

原来是循环中不停的修改textbox值导致的。

}
return sb.ToString();

StreamReader sr = new StreamReader(path, Encoding.Default);
String line;
StringBuilder sb = new StringBuilder();

总结:

}

while ((line = sr.ReadLine()) != null)
{
sb.Append(line);
}

 比较大的运算,特别是大的循环,不要操作控件,因为控件的一些属性每改变一次,都要paint重绘一次,这样效率会很低
一般用变量来操作,然后完了一次就执行掉。

 

 

贴上代码:

 

//然后将其装换为泛型对象 

string file = fileDialog.FileName;
//删除后缀 存入files类Filename属性 ,后用于存在word第一行

public static string ReadFile(string FilePath)
{
if (System.IO.File.Exists(FilePath))
{
try
{
StreamReader reader = new StreamReader(FilePath,
Encoding.GetEncoding(“gb2312”));//System.IO.File.OpenText(FilePath);
StringBuilder builder = new StringBuilder();
string str = “”;
string str2 = “”;
while ((str = reader.ReadLine()) != null)
{
builder.AppendLine(str  );
}
str2 = builder.ToString();
reader.Close();
return str2;
}
catch
{
return “”;
}
}
return “”;
}

JavaScriptSerializer js = new JavaScriptSerializer();
Models.aa a = js.Deserialize<aa>(sb.ToString());
List<aaa> aa = a.dateils;

StreamReader sr = new StreamReader(file,
System.Text.Encoding.Default);
String line;
StringBuilder sb = new StringBuilder();
// int n = 0;
while (sr.Peek() > -1)
{

 

图片 1

//显示在textbox中
sb.Append(line + “\r\n”);
//textBox2.Text = sb.ToString();   //sb
在循环中向 texbox2
发送数据,每次发送,textbox控件都要刷新一次,导致程序效率直线下降。
//跳过行空格
if (line.Trim() != “”)
{
……
if (lines.Length >= 3)
{

public static bool SaveFile(string FilePath, string type, string
content)
{
string path = FilePath;
if (!File.Exists(path))
type = “NEW”;
try
{
StreamWriter writer;
if (type == “NEW”)
{
using (writer = new StreamWriter(FilePath, false,
Encoding.GetEncoding(“gb2312”)))//System.IO.File.CreateText(path))
{
writer.Write(content);
writer.Flush();
writer.Close();
return true;
}
}
if (type == “ADD”)
{
if (System.IO.File.Exists(path))
{
writer = new StreamWriter(path, true, Encoding.GetEncoding(“gb2312”));
writer.Write(content);
writer.Flush();
writer.Close();
return true;
}
return false;
}
return false;
}
catch
{
return false;
}
}

//然后在通过foreach来遍历泛型 从来达到指定数量的分组
文章中分组的数量为100

//数据传入数组然后入队列
……
}
}
}

 

图片 2

r.Close(); sr.Dispose();
textBox2.Text =
sb.ToString(); //放在此处问题解决
}
}

 

图片 3

 

图片 4

 

 

 

图片 5

 

 

 

切记:需要在web.config设置保存的路径 

 

 

 

 public class FileHelper
    {
        public static string ReadFile(string path)
        {
            StreamReader sr = new StreamReader(path, Encoding.Default);
            String line;
            StringBuilder sb = new StringBuilder();
            while ((line = sr.ReadLine()) != null)
            {
                sb.AppendLine(line);

            }
            return sb.ToString();

        }

        public static IEnumerable<string> ReadFileToEnumerable(string path)
        {
            StreamReader sr = new StreamReader(path, Encoding.Default);
            String line;

            while ((line = sr.ReadLine()) != null)
            {
                yield return line;

            }


        }

        public static IList<T> ReadFileToList<T>(string[] path, Func<string, T> func)
        {
            var list = new List<T>();
            foreach (var item in path)
            {
                list = list.Union(ReadFileToEnumerable(item).Select(func)).ToList();
            }
            return list;
        }
        public static bool AppendFile(string filePath, string type, string content)
        {

            try
            {

                if (System.IO.File.Exists(filePath))
                    {
                        var writer = new StreamWriter(filePath, true, Encoding.GetEncoding("gb2312"));
                        writer.Write(content);
                        writer.Flush();
                        writer.Close();
                        return true;
                    }
                    return false;

            }
            catch
            {
                return false;
            }
        }

        public static bool CreateFile(string filePath, string type, string content)
        {

            try
            {
                StreamWriter writer;

                    using (writer = new StreamWriter(filePath, false, Encoding.GetEncoding("gb2312")))//System.IO.File.CreateText(path))
                    {
                        writer.Write(content);
                        writer.Flush();
                        writer.Close();
                        return true;
                    }

            }
            catch
            {
                return false;
            }
        }

    }

  

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图