Base64加密解密
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 沃狐新浪博客推广系统
{
class Base64
{
///
/// 编码类型(编码名称)
/// * 代码页 名称
/// * 1200 "UTF-16LE"、"utf-16"、"ucs-2"、"unicode"或"ISO-10646-UCS-2"
/// * 1201 "UTF-16BE"或"unicodeFFFE"
/// * 1252 "windows-1252"
/// * 65000 "utf-7"、"csUnicode11UTF7"、"unicode-1-1-utf-7"、"unicode-2-0-utf-7"、"x-unicode-1-1-utf-7"或"x-unicode-2-0-utf-7"
/// * 65001 "utf-8"、"unicode-1-1-utf-8"、"unicode-2-0-utf-8"、"x-unicode-1-1-utf-8"或"x-unicode-2-0-utf-8"
/// * 20127 "us-ascii"、"us"、"ascii"、"ANSI_X3.4-1968"、"ANSI_X3.4-1986"、"cp367"、"csASCII"、"IBM367"、"iso-ir-6"、"ISO646-US"或"ISO_646.irv:1991"
/// * 54936 "GB18030" /// /// 待加密的字符串
///
public string EncodeBase64(string code_type, string code)
{
string encode = "";
byte[] bytes = Encoding.GetEncoding(code_type).GetBytes(code);
//将一组字符编码为一个字节序列.
try
{
encode = Convert.ToBase64String(bytes);
//将8位无符号整数数组的子集转换为其等效的,以64为基的数字编码的字符串形式.
} catch
{
encode = code;
}
return encode;
}
///
/// 编码类型
/// 已用base64算法加密的字符串
///
public string DecodeBase64(string code_type, string code)
{
string decode = "";
byte[] bytes = Convert.FromBase64String(code); //将2进制编码转换为8位无符号整数数组.
try
{
decode = Encoding.GetEncoding(code_type).GetString(bytes); //将指定字节数组中的一个字节序列解码为一个字符串。
}
catch
{
decode = code;
}
return decode;
}
}
}
BitmapRegion绘制图形控件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace 沃狐新浪博客推广系统
{
class BitmapRegion
{
public BitmapRegion()
{
}
/// <summary>
/// Create and apply the region on the supplied control
/// </summary>
/// The Control object to apply the region to//
/// The Bitmap object to create the region from
public void CreateControlRegion(Control control, Bitmap bitmap)
{
// Return if control and bitmap are null
if (control == null || bitmap == null)
return;
// Set our control's size to be the same as the bitmap
control.Width = bitmap.Width;
control.Height = bitmap.Height;
// Check if we are dealing with Form here
if (control is System.Windows.Forms.Form)
{
// Cast to a Form object
Form form = (Form)control;
// Set our form's size to be a little larger that the bitmap just
// in case the form's border style is not set to none in the first place
form.Width += ;
form.Height += ;
// No border
form.FormBorderStyle = FormBorderStyle.None;
// Set bitmap as the background image
form.BackgroundImage = bitmap;
// Calculate the graphics path based on the bitmap supplied
GraphicsPath graphicsPath = CalculateControlGraphicsPath(bitmap);
// Apply new region
form.Region = new Region(graphicsPath);
}
// Check if we are dealing with Button here
else if (control is System.Windows.Forms.Button)
{
// Cast to a button object
Button button = (Button)control;
// Do not show button text
button.Text = "";
// Change cursor to hand when over button
button.Cursor = Cursors.Hand;
// Set background image of button
button.BackgroundImage = bitmap;
// Calculate the graphics path based on the bitmap supplied
GraphicsPath graphicsPath = CalculateControlGraphicsPath(bitmap);
// Apply new region
button.Region = new Region(graphicsPath);
}
}
/// <summary>
/// Calculate the graphics path that representing the figure in the bitmap
/// excluding the transparent color which is the top left pixel.
/// </summary>
/// The Bitmap object to calculate our graphics path from
/// <returns>Calculated graphics path</returns>
private static GraphicsPath CalculateControlGraphicsPath(Bitmap bitmap)
{
// Create GraphicsPath for our bitmap calculation
GraphicsPath graphicsPath = new GraphicsPath();
// Use the top left pixel as our transparent color
Color colorTransparent = bitmap.GetPixel(, );
// This is to store the column value where an opaque pixel is first found.
// This value will determine where we start scanning for trailing opaque pixels.
int colOpaquePixel = ;
// Go through all rows (Y axis)
for (int row = ; row < bitmap.Height; row++)
{
// Reset value
colOpaquePixel = ;
// Go through all columns (X axis)
for (int col = ; col < bitmap.Width; col++)
{
// If this is an opaque pixel, mark it and search for anymore trailing behind
if (bitmap.GetPixel(col, row) != colorTransparent)
{
// Opaque pixel found, mark current position
colOpaquePixel = col;
// Create another variable to set the current pixel position
int colNext = col;
// Starting from current found opaque pixel, search for anymore opaque pixels
// trailing behind, until a transparent pixel is found or minimum width is reached
for (colNext = colOpaquePixel; colNext < bitmap.Width; colNext++)
if (bitmap.GetPixel(colNext, row) == colorTransparent)
break;
// Form a rectangle for line of opaque pixels found and add it to our graphics path
graphicsPath.AddRectangle(new Rectangle(colOpaquePixel, row, colNext - colOpaquePixel, ));
// No need to scan the line of opaque pixels just found
col = colNext;
}
}
}
// Return calculated graphics path
return graphicsPath;
}
}
}
CatchUrls抓取网页url
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Net;
using System.IO;
using System.Collections;
using System.Text.RegularExpressions;
namespace 沃狐新浪博客推广系统
{
class CatchUrls
{
string strCode;
ArrayList alLinks;
// 获取指定网页的HTML代码
private string url = "";
public string URL
{
get
{
return url;
}
set
{
url = value;
}
}
public string htmlCode;
public string GetPageSource()
{
Uri uri = new Uri(URL);
// http:// blog.sina.com.cn/lm/oldrank/20120615/all.html
HttpWebRequest hwReq = (HttpWebRequest)WebRequest.Create(uri);
HttpWebResponse hwRes = (HttpWebResponse)hwReq.GetResponse();
hwReq.Method = "Get";
hwReq.KeepAlive = false;
StreamReader reader = new StreamReader(hwRes.GetResponseStream(), System.Text.Encoding.GetEncoding("GB2312"));
return reader.ReadToEnd();
}
// 提取HTML代码中的网址
public ArrayList GetHyperLinks()
{
ArrayList al = new ArrayList();
string strRegex = @"http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?";
Regex r = new Regex(strRegex, RegexOptions.IgnoreCase);
MatchCollection m = r.Matches(htmlCode);
//progressBar1.Maximum = m.Count;
for (int i = ; i <= m.Count - ; i++)
{
bool rep = false;
string strNew = m[i].ToString();
// 过滤重复的URL
foreach (string str in al)
{
if (strNew == str)
{
rep = true;
break;
}
}
if (!rep)
{
if (strNew.IndexOf("blog.sina.com.cn/u") >= )
{
strNew = strNew.Replace("http://blog.sina.com.cn/u/", "");
al.Add(strNew.Trim());
}
}
}
al.Sort();//重新排序
return al;
}
//
static string GetURLContent(string url, string EncodingType)
{
string PetiResp = "";
Stream mystream;
System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(url);
req.AllowAutoRedirect = true;
System.Net.HttpWebResponse resp = (System.Net.HttpWebResponse)req.GetResponse();
if (resp.StatusCode == System.Net.HttpStatusCode.OK)
{
mystream = resp.GetResponseStream();
System.Text.Encoding encode = System.Text.Encoding.GetEncoding(EncodingType);
StreamReader readStream = new StreamReader(mystream, encode);
char\[\] cCont = new char\[\];
int count = readStream.Read(cCont, , );
while (count > )
{
// Dumps the 256 characters on a string and displays the string to the console.
String str = new String(cCont, , count);
PetiResp += str;
count = readStream.Read(cCont, , );
}
resp.Close();
return PetiResp;
}
resp.Close();
return null;
}
// 获取网址的域名后缀
static string GetDomain(string strURL)
{
string retVal;
string strRegex = @"(\\.com/|\\.net/|\\.cn/|\\.org/|\\.gov/|\\.cn/)";
Regex r = new Regex(strRegex, RegexOptions.IgnoreCase);
Match m = r.Match(strURL);
retVal = m.ToString();
strRegex = @"\\.|/$";
retVal = Regex.Replace(retVal, strRegex, "").ToString();
if (retVal == "")
retVal = "other";
return retVal;
}
//public string BaseURLs;
}
}
CookieComputer提取post模拟登陆网站cookie.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Web;
using System.IO;
using System.Collections;
namespace 沃狐新浪博客推广系统
{
class CookieComputer
{
#region 通过登录获取cookie信息参数
//登录链接
private static string url = "";
///
public static string Url
{
get
{
return url;
}
set
{
url = value;
}
}
//用户名
private static string username = "";
/// <summary>
/// 登录用户名,默认为空
/// </summary>
public static string Username
{
get
{
return username;
}
set
{
username = value;
}
}
//密码
private static string password = "";
/// <summary>
/// 登录密码,默认为空
/// </summary>
public static string Password
{
get
{
return password;
}
set
{
password = value;
}
}
//表单需要提交的参数,注意改为你已注册的信息。
private static string postDate="";
/// <summary>
/// 表单需要提交的参数,注意改为你已注册的信息。
/// </summary>
public static string PostDate
{
get
{
return postDate;
}
set
{
postDate = value;
}
}
#endregion
//写成无参数方便线程调用
/// <summary>
/// 获取目标网站cookie
/// </summary>
/// <returns>CookieContainer</returns>
public static CookieContainer Get\_SinaLogin()
{
//新建cookie容器
CookieContainer CookiC = new CookieContainer();
//处理表单的绝对URL地址
string FormURL = Url;
//表单需要提交的参数,注意改为你已注册的信息。
// "username=" + Username + "&password=" + Password;
string FormData = PostDate;
//设定编码格式
Encoding encoding = Encoding.UTF8;
//将编码转换成字节数组
byte\[\] data = encoding.GetBytes(FormData);
//创建HttpWebRequest请求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(FormURL);
///<!--设定标头开始-->
//数据提交方式
request.Method = "POST";
//设定请求连接类型
request.ContentType = "application/x-www-form-urlencoded";
//设定请求内容长度
request.ContentLength = data.Length;
//声明了浏览器用于 HTTP 请求的用户代理头的值
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
///<!--设定标头结束-->
//返回请求数据流
Stream newStream = request.GetRequestStream();
//向当前流中写入字节序列
newStream.Write(data, , data.Length);
//关闭流
newStream.Close();
//获取或设置与此请求关联的 cookie。
request.CookieContainer = CookiC;
//返回来自 Internet 资源的响应。
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//将返回的cookie添加进cookie容器
CookiC.Add(response.Cookies);
//获取流,该流用于读取来自服务器的响应的体。
Stream stream = response.GetResponseStream();
//将流转换成指定编码格式字符串
string WebContent = new StreamReader(stream, System.Text.Encoding.UTF8).ReadToEnd();
//返回获取到的cookie
return CookiC;
}
/// <summary>
/// 获取目标网站cookie
/// </summary>
/// <returns>CookieContainer</returns>
public static CookieContainer Get\_ssoSinaLogin()
{
//新建cookie容器
CookieContainer CookiC = new CookieContainer();
//处理表单的绝对URL地址
string FormURL = Url;
//表单需要提交的参数,注意改为你已注册的信息。
// "entry=blog®\_entry=blog&reference=http://blog.sina.com.cn&door=&safe\_login=1&username=" + Username + "&password=" + Password;
string FormData = PostDate;
//设定编码格式
Encoding encoding = Encoding.UTF8;
//将编码转换成字节数组
byte\[\] data = encoding.GetBytes(FormData);
//创建HttpWebRequest请求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(FormURL);
///<!--设定标头开始-->
//数据提交方式
request.Method = "POST";
//设定请求连接类型
request.ContentType = "application/x-www-form-urlencoded";
request.Accept = "text/html, application/xhtml+xml, \*/\*";
request.KeepAlive = true;
//设定请求内容长度
request.ContentLength = data.Length;
//声明了浏览器用于 HTTP 请求的用户代理头的值
request.UserAgent = " Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; 360SE)";
///<!--设定标头结束-->
//返回请求数据流
Stream newStream = request.GetRequestStream();
//向当前流中写入字节序列
newStream.Write(data, , data.Length);
//关闭流
newStream.Close();
//获取或设置与此请求关联的 cookie。
request.CookieContainer = CookiC;
//返回来自 Internet 资源的响应。
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//将返回的cookie添加进cookie容器
CookiC.Add(response.Cookies);
//获取流,该流用于读取来自服务器的响应的体。
Stream stream = response.GetResponseStream();
//将流转换成指定编码格式字符串
string WebContent = new StreamReader(stream, System.Text.Encoding.UTF8).ReadToEnd();
//返回获取到的cookie
return CookiC;
}
/// <summary>
/// 遍历CookieContainer提取cookie
/// </summary>
/// <param name="cc">需要遍历的CookieContainer</param>
/// <returns>List<Cookie></returns>
public static List<Cookie> GetAllCookies(CookieContainer cc)
{
List<Cookie> lstCookies = new List<Cookie>();
Hashtable table = (Hashtable)cc.GetType().InvokeMember("m\_domainTable", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField | System.Reflection.BindingFlags.Instance, null, cc, new object\[\] { });
foreach (object pathList in table.Values)
{
SortedList lstCookieCol = (SortedList)pathList.GetType().InvokeMember("m\_list", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField | System.Reflection.BindingFlags.Instance, null, pathList, new object\[\] { });
foreach (CookieCollection colCookies in lstCookieCol.Values)
foreach (Cookie c in colCookies) lstCookies.Add(c);
}
return lstCookies;
}
}
}
INIClass专门ini操作类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.IO;
namespace 沃狐新浪博客推广系统
{
class INIClass
{
public string inipath;
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
[DllImport("kernel32")]
private static extern long WritePrivateProfileSection(string section, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, Byte[] retVal, int size, string filePath);
///
/// 文件路径
public INIClass(string INIPath)
{
inipath = INIPath;
if (inipath == null || inipath.Length < || !ExistINIFile)
{
File.Create(INIPath).Close();
}
}
/// <summary>
/// 写入INI文件
/// </summary>
/// <param name="Section">项目名称(如 \[TypeName\] )</param>
/// <param name="Key">键</param>
/// <param name="Value">值</param>
public void IniWriteValue(string Section, string Key, object objValue)
{
if (objValue == null) objValue = "";
WritePrivateProfileString(Section, Key, objValue.ToString().Trim(), this.inipath);
}
/// <summary>
/// 写入INI文件,没有健只有值
/// </summary>
/// <param name="Section">项目名称(如 \[TypeName\] )</param>
/// <param name="Value">值</param>
public void IniWriteSection(string section, string val)
{
WritePrivateProfileSection(section, val, this.inipath);
}
/// <summary>
/// 读出INI文件
/// </summary>
/// <param name="Section">项目名称(如 \[TypeName\] )</param>
/// <param name="Key">键</param>
public string IniReadValue(string Section, string Key)
{
StringBuilder temp = new StringBuilder();
int i = GetPrivateProfileString(Section, Key, "", temp, , this.inipath);
return temp.ToString();
}
/// <summary>
/// 读出INI文件数组
/// </summary>
/// <param name="Section">项目名称(如 \[TypeName\] )</param>
/// <param name="Key">键</param>
public byte\[\] IniReadValueNew(string Section, string Key)
{
byte\[\] temp = new byte\[\];
int i = GetPrivateProfileString(Section, Key, "", temp, , this.inipath);
return temp;
}
/// <summary>
/// 验证文件是否存在
/// </summary>
/// <returns>布尔值</returns>
public bool ExistINIFile
{
get {
return File.Exists(inipath);
}
}
}
}
Sendwall新浪发送信息类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Web;
using System.IO;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Runtime.InteropServices;
namespace 沃狐新浪博客推广系统
{
class Sendwall
{
private string tuid="";
public string Tuid
{
get
{
return tuid;
}
set
{
tuid = value;
}
}
private string fuid="";
public string Fuid
{
get
{
return fuid;
}
set
{
fuid = value;
}
}
private string content="";
public string Content
{
get
{
return content;
}
set
{
content = value;
}
}
CookieContainer cc = new CookieContainer();
public CookieContainer Cc
{
get
{
return cc;
}
set
{
cc = value;
}
}
private Form1 m\_spiderForm;
/// <summary>
///蜘蛛报告其结果的对象。
/// </summary>此处最难理解
public Form1 ReportTo
{
get
{
return m\_spiderForm;
}
set
{
m\_spiderForm = value;
}
}
//转换成URlEncode
public string UrlEncode(string str)
{
StringBuilder sb = new StringBuilder();
byte\[\] byStr = System.Text.Encoding.UTF8.GetBytes(str); //默认是System.Text.Encoding.Default.GetBytes(str)
for (int i = ; i < byStr.Length; i++)
{
sb.Append(@"%" + Convert.ToString(byStr\[i\], ));
}
return (sb.ToString());
}
//Form1 frm1 = new Form1();
//发纸条目前无法判断是否发生成功
public void SendwallF()
{
string FormData = "version=7";
FormData += "&varname=addFriendRequest";
FormData += "&tuid=" + Tuid;//自己
FormData += "&rnd=1342799242793" ;
FormData += "&fuid=" + fuid;//对方
FormData += "&content=" + UrlEncode(Content);
FormData += "&authcode=";
//http://control.blog.sina.com.cn/riaapi/profile/messagesend.php?tuid=2823833972&fuid=2774260630&authcode=3281&content=%E4%BD%A0%E5%A5%BD&varname=addFriendRequest&version=7&rnd=1342799242793
string FormURL = "http://control.blog.sina.com.cn/riaapi/profile/messagesend.php";
//try
//{
HttpWebRequest Myrequest = (HttpWebRequest)WebRequest.Create(FormURL + FormData);
Myrequest.CookieContainer = Cc;
Myrequest.Timeout = ;
Myrequest.ContentType = "application/x-www-form-urlencoded";
Myrequest.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; 360SE)";
Myrequest.Accept = "application/javascript, \*/\*;q=0.8";
Myrequest.Headers.Add("Accept-Language", "zh-CN");
//
Myrequest.Headers.Add("Accept-Encoding", "gzip, deflate");
//
Myrequest.Headers.Add("Cache-Control", "no-cache");
Myrequest.Referer = "http://blog.sina.com.cn/s/profile\_" + fuid + ".html";
HttpWebResponse Myresponse = (HttpWebResponse)Myrequest.GetResponse();
cc.Add(Myresponse.Cookies);
Stream Mystream = Myresponse.GetResponseStream();
string WebContent = new StreamReader(Mystream, Encoding.GetEncoding("utf-8")).ReadToEnd();
Myresponse.Close();
Mystream.Close();
ReportTo.SetrichTextWithDelegate(ReportTo.richTextBox1, "发送纸条:" + WebContent + "成功");
ReportTo.autoEventStartF.Reset();
//}
//catch
//{
// frm1.SetrichTextWithDelegate(frm1.richTextBox1, "发送纸条失败");
//}
//string WebContent = new StreamReader(Mystream, Encoding.GetEncoding("utf-8")).ReadToEnd();
//Match m = Regex.Match(WebContent, @"{\\""rows\\""(\[^}\]\*)}", RegexOptions.IgnoreCase);
//return true;
}
//发送留言
public void SendmsgF()
{
//try
//{
//请求参数设定
string FormData = "domain=1";
//
FormData += "&uid=" + Tuid;
//
FormData += "&msg=" + Content;
//
string FormURL = "http://control.blog.sina.com.cn/blog\_rebuild/riaapi/profile/note/notewalladd.php";
//
Encoding encoding = Encoding.UTF8;
//
byte\[\] data = encoding.GetBytes(FormData);
//
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(FormURL);
//
request.Method = "POST";
//数据提交方式
request.ContentType = "application/x-www-form-urlencoded";
//
request.KeepAlive = true;
//
request.AllowWriteStreamBuffering = true;
//
request.Credentials = System.Net.CredentialCache.DefaultCredentials;
//
request.MaximumResponseHeadersLength = -;
//
request.Referer = "http://blog.sina.com.cn/u/" + Tuid;
//
request.Accept = "text/html, application/xhtml+xml, \*/\*";
//
request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
//
request.Headers.Add("Accept-Language", "zh-CN");
//
request.Headers.Add("Accept-Encoding", "gzip, deflate");
//
request.Headers.Add("Cache-Control", "no-cache");
//
request.CookieContainer = Cc;
//
request.ContentLength = data.Length;
//模拟一个UserAgent
Stream newStream = request.GetRequestStream();
//
newStream.Write(data, , data.Length);
//
newStream.Close();
//
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//
request.GetResponse().ResponseUri.ToString();
//
Stream stream = response.GetResponseStream();
//
string WebContent = new StreamReader(stream, System.Text.Encoding.UTF8).ReadToEnd();
//
Match m = Regex.Match(WebContent, @"{\\""rows\\""(\[^}\]\*)}", RegexOptions.IgnoreCase);
//
ReportTo.SetrichTextWithDelegate(ReportTo.richTextBox1, "发送留言成功");
ReportTo.autoEventStartF.Reset();
//if (m.Success)
//{
// string str = m.Value.Replace("rows", "");
// str = str.Replace(":", "");
// //str = str.Replace("{", "");
// //str = str.Replace("}", "");
// if (str.Length > 3)
// {
// return true;
// }
// else
// {
// return false;
// }
//}
//else
//{
// return false;
//}
//}
//catch { return false; }
}
//加好友
public void SendaddFriendF()
{
string FormData = "version=7";
FormData += "&varname=addFriendRequest";
FormData += "&tuid=" + Tuid;
FormData += "&rnd=";
FormData += "&fuid=" + fuid;
FormData += "&content=" + UrlEncode(Content);
FormData += "&authcode=";
//try
//{
string FormURL = "http://control.blog.sina.com.cn/riaapi/profile/invitesend.php";
HttpWebRequest Myrequest = (HttpWebRequest)WebRequest.Create(FormURL + FormData);
Myrequest.CookieContainer = Cc;
HttpWebResponse Myresponse = (HttpWebResponse)Myrequest.GetResponse();
cc.Add(Myresponse.Cookies);
Stream Mystream = Myresponse.GetResponseStream();
//return true;
//}
//catch { return false; }
ReportTo.autoEventStartF.Reset();
}
//加关注
public void SendattentionF()
{
Random rd = new Random();
string FormData = "varname=requestId\_"+rd.Next().ToString();;
FormData += "&uid=" + fuid;
FormData += "&aid=" + Tuid;
string FormURL = "http://control.blog.sina.com.cn/riaapi/profile/attention\_add.php";
//try
//{
HttpWebRequest Myrequest = (HttpWebRequest)WebRequest.Create(FormURL + FormData);
Myrequest.CookieContainer = Cc;
HttpWebResponse Myresponse = (HttpWebResponse)Myrequest.GetResponse();
cc.Add(Myresponse.Cookies);
Stream Mystream = Myresponse.GetResponseStream();
//return true;
//}
//catch { return false; }
ReportTo.autoEventStartF.Reset();
}
}
}
xmlRW专门xml读写类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Windows.Forms;
namespace 沃狐新浪博客推广系统
{
class xmlRW
{
public List<xmlUserLogin> Read(string path)
{
int UserCode = ;
string Auser="",UserPwd = "", UserName = "", Remark = "";
List<xmlUserLogin> list = new List<xmlUserLogin>();
XmlReaderSettings xmlSet = new XmlReaderSettings();
using (XmlReader reader = XmlReader.Create(path, xmlSet))
{
while (reader.Read()) //使用XmlReader对象单向高效地读取xml文件
{
xmlUserLogin UserLogin = new xmlUserLogin();
if (reader.NodeType == XmlNodeType.Element && "User" == reader.LocalName)
{
Auser =reader.GetAttribute();
}
if (reader.NodeType == XmlNodeType.Element && "UserCode" == reader.LocalName)
{
UserCode = Convert.ToInt16(reader.ReadString());
}
if (reader.NodeType == XmlNodeType.Element && "UserName" == reader.LocalName)
{
UserName= reader.ReadString();
}
if (reader.NodeType == XmlNodeType.Element && "UserPwd" == reader.LocalName)
{
UserPwd = reader.ReadString();
}
if (reader.NodeType == XmlNodeType.Element && "Remark" == reader.LocalName)
{
UserLogin.auser = Auser;
UserLogin.userCode = UserCode;
UserLogin.userName = UserName;
UserLogin.userPwd = UserPwd;
UserLogin.remark = Remark;
list.Add(UserLogin);
}
}
}
return list;
}
//WriteXml 完成对User的修改密码操作
//FileName 当前xml文件的存放位置
//UserCode 欲操作用户的编码
//UserPassword 欲修改用户的密码
public void UpdateNode(string FileName, string OUserName,string NUserName, string NUserPwd,string Remark)
{
//初始化XML文档操作类
XmlDocument myDoc = new XmlDocument();
//加载XML文件
myDoc.Load(FileName);
//搜索指定的节点
System.Xml.XmlNodeList nodes = myDoc.SelectNodes("//User");
if (nodes != null)
{
foreach (System.Xml.XmlNode xn in nodes)
{
if (xn.SelectSingleNode("UserName").InnerText == OUserName)
{
xn.SelectSingleNode("UserName").InnerText = NUserName;
xn.SelectSingleNode("UserPwd").InnerText = NUserPwd;
xn.SelectSingleNode("Remark").InnerText = Remark;
}
}
}
myDoc.Save(FileName);
}
//DeleteNode 完成对User的添加操作
//FileName 当前xml文件的存放位置
//UserCode 欲添加用户的编码
public void DeleteNode(string FileName, string UserName)
{
//初始化XML文档操作类
XmlDocument myDoc = new XmlDocument();
//加载XML文件
myDoc.Load(FileName);
//搜索指定某列,一般是主键列
XmlNodeList myNode = myDoc.SelectNodes("//UserName");
//判断是否有这个节点
if (!(myNode == null))
{
//遍历节点,找到符合条件的元素
foreach (XmlNode xn in myNode)
{
if (xn.InnerXml == UserName)
//删除元素的父节点
xn.ParentNode.ParentNode.RemoveChild(xn.ParentNode);
}
}
//保存
myDoc.Save(FileName);
}
//WriteXml 完成对User的添加操作
//FileName 当前xml文件的存放位置
//UserCode 欲添加用户的编码
//UserName 欲添加用户的姓名
//UserPassword 欲添加用户的密码
public void AddNode(string FileName, string UserName, string UserPassword, string Remark)
{
//初始化XML文档操作类
XmlDocument myDoc = new XmlDocument();
//加载XML文件
myDoc.Load(FileName);
//添加元素--UserName
XmlElement eleUserName = myDoc.CreateElement("UserName");
XmlText textUserName = myDoc.CreateTextNode(UserName);
//添加元素--UserPwd
XmlElement eleUserPwd = myDoc.CreateElement("UserPwd");
XmlText textUserPwd = myDoc.CreateTextNode(UserPassword);
//添加元素--Remark
XmlElement eleRemark = myDoc.CreateElement("Remark");
XmlText textRemark = myDoc.CreateTextNode(Remark);
//添加节点 User要对应我们xml文件中的节点名字
XmlNode newElem = myDoc.CreateNode(XmlNodeType.Element, "User","");
XmlAttribute newElemAttrib =null;
newElemAttrib = myDoc.CreateAttribute("eb");
newElemAttrib.Value = "true";
newElem.Attributes.Append(newElemAttrib);
//newElem.Attributes
//newElem = myDoc.CreateNode(XmlNodeType.Attribute, "eb", "true");
//在节点中添加元素
newElem.AppendChild(eleUserName);
newElem.LastChild.AppendChild(textUserName);
newElem.AppendChild(eleUserPwd);
newElem.LastChild.AppendChild(textUserPwd);
newElem.AppendChild(eleRemark);
newElem.LastChild.AppendChild(textRemark);
//将节点添加到文档中
XmlElement root = myDoc.DocumentElement;
root.AppendChild(newElem);
//保存
myDoc.Save(FileName); }
}
}
xmlUserLogin参数类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 沃狐新浪博客推广系统
{
class xmlUserLogin
{
private string Auser = "";
private int UserCode = ;
private string UserName = "";
private string UserPwd = "";
private string Remark = "";
public string auser
{
get
{
return Auser;
}
set
{
Auser = value;
}
}
public int userCode
{
get
{
return UserCode;
}
set
{
UserCode = value;
}
}
public string userPwd {
get
{
return UserPwd;
}
set
{
UserPwd = value;
}
}
public string userName
{
get {
return UserName;
}
set
{
UserName = value;
}
}
public string remark {
get
{
return Remark;
}
set
{
Remark = value;
}
}
}
}
c# 读写xml 操作类
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Xml;
namespaceKeyCalc
{
classXmlClass
{
///
privatestringxmlFilePath;
///
publicstringskinIndex;
///
publicstringskinPath;
publicXmlClass()
{
//指定XML文件名
xmlFilePath ="config.xml";
//检测XML配置文件是否存在
if(System.IO.File.Exists(xmlFilePath))
return;
CreateDefaultXml();
}
#region " ReadXML() 读取XML配置文件的参数设置,获取下载的TXT文件路径与上传的数据文件路径"
/// <summary>
/// 读取XML配置文件的参数设置,获取下载的TXT文件路径与上传的数据文件路径
/// </summary>
/// <returns></returns>
publicboolReadXML()
{
try
{
XmlDocument xmlDoc=newXmlDocument();
//读取XML配置文件
xmlDoc.Load(xmlFilePath);
//读取XML文件节点
XmlNode rootNode = xmlDoc.SelectSingleNode("Skin").SelectSingleNode("ParameterSet");
if( rootNode==null)
throw(newException("XML配置文件信息异常"));
//获取XML文件参数设置下的节点值
XmlElement downfile = (XmlElement)(rootNode.SelectSingleNode("SkinIndex"));
if(downfile ==null)
throw(newException("XML配置文件信息异常"));
skinIndex = downfile.InnerText;
XmlElement uploadfile = (XmlElement)(rootNode.SelectSingleNode("SkinPath"));
if(uploadfile ==null)
throw(newException("XML配置文件信息异常"));
skinPath = uploadfile.InnerText;
returntrue;
}
catch(System.Exception e)
{
throw(e);
}
}
#endregion
#region " WriteXML() 写XML配置文件的参数设置,保存下载的TXT文件路径与上传的数据文件路径"
/// <summary>
/// 写XML配置文件的参数设置,保存下载的TXT文件路径与上传的数据文件路径
/// </summary>
/// <returns></returns>
publicboolWriteXML()
{
try
{
XmlDocument xmlDoc =newXmlDocument();
//读取XML配置文件
xmlDoc.Load(xmlFilePath);
//读取XML文件节点
XmlNode rootNode = xmlDoc.SelectSingleNode("Skin").SelectSingleNode("ParameterSet");
if(rootNode ==null)
throw(newException("XML配置文件信息异常"));
//设置XML文件节点的值
XmlElement skinIndexs = (XmlElement)(rootNode.SelectSingleNode("SkinIndex"));
if(skinIndexs ==null)
throw(newException("XML配置文件信息异常"));
skinIndexs.InnerText = skinIndex;
XmlElement skinPaths = (XmlElement)(rootNode.SelectSingleNode("SkinPath"));
if(skinPaths ==null)
throw(newException("XML配置文件信息异常"));
skinPaths.InnerText = skinPath;
//保存XML文件
xmlDoc.Save(xmlFilePath);
returntrue;
}
catch(System.Exception ex)
{
throw(ex);
}
}
#endregion
#region " CreateDefaultXml() 创建一个默认的XML配置文件"
/// <summary>
/// 创建一个默认的XML配置文件
/// </summary>
privatevoidCreateDefaultXml()
{
try
{
XmlDocument xmlDoc =newXmlDocument();
//创建XML文件描述
XmlDeclaration dec = xmlDoc.CreateXmlDeclaration("1.0","GB2312",null);
xmlDoc.AppendChild(dec);
//创建根元素
XmlNode root = xmlDoc.CreateNode(XmlNodeType.Element,"Skin","");
xmlDoc.AppendChild(root);
//添加参数设置节点
XmlNode parConfig = xmlDoc.CreateNode(XmlNodeType.Element,"ParameterSet","");
root.AppendChild(parConfig);
//添加下载到PDA的TXT文件路径
XmlElement skinIndexs = xmlDoc.CreateElement("SkinIndex");
skinIndexs.InnerText ="";
parConfig.AppendChild(skinIndexs);
//添加PDA数据文件上传到PC端的文件路径
XmlElement skinPaths = xmlDoc.CreateElement("SkinPath");
skinPaths.InnerText ="";
parConfig.AppendChild(skinPaths);
//保存xml文件
xmlDoc.Save(xmlFilePath);
}
catch(System.Exception ex)
{
throw(newException("创建默认XML文件失败"+ex.Message));
}
}
#endregion
}
}
C#读写XML文件
**************************** phone.xml ****************************
*********************************************************************
·使用Document读取及写入XML方法
private void xmlfun()
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("phone.xml"));
XmlElement node = doc.CreateElement("phone");
XmlAttribute atr = doc.CreateAttribute("id");
atr.InnerText = "";
node.Attributes.Append(atr);
XmlNode xnode = (XmlNode)doc.CreateElement("Name");
xnode.InnerText="testName";
node.AppendChild(xnode);
xnode = (XmlNode)doc.CreateElement("Number");
xnode.InnerText="";
node.AppendChild(xnode);
xnode = (XmlNode)doc.CreateElement("City");
xnode.InnerText="cs";
node.AppendChild(xnode);
xnode = (XmlNode)doc.CreateElement("DateOfBirth");
xnode.InnerText="12/02/1978";
node.AppendChild(xnode);
doc.DocumentElement.InsertAfter(node,doc.DocumentElement.LastChild);
doc.Save(Server.MapPath("phone1.xml")); //必须要存为不同的文件
}
·使用XmlTextWriter写入XML方法
private void xmlwriter()
{
XmlTextWriter writer= new XmlTextWriter(Server.MapPath("phone4.xml"),null);
writer.Formatting = Formatting.Indented; //缩进格式
writer.Indentation =;
writer.WriteStartDocument();
writer.WriteStartElement("Person");
writer.WriteStartAttribute("ID",null);
writer.WriteString("");
writer.WriteEndAttribute();
writer.WriteStartElement("Name");
writer.WriteString("testWriterName");
writer.WriteEndElement();
writer.WriteStartElement("Number");
writer.WriteString("");
writer.WriteEndElement();
writer.WriteStartElement("City");
writer.WriteString("testWriterCity");
writer.WriteEndElement();
writer.Flush();
writer.Close();
}
·使用XmlTextReader读取XML方法
private void xmlread()
{
XmlTextReader reader = new XmlTextReader(Server.MapPath("phone.xml"));
while(reader.Read())
{
if(reader.LocalName.Equals("Name") || reader.LocalName.Equals("Number"))
{
this.Label1.Text += reader.ReadString()+"\t";
}
·作用SqlCommand.ExecuteXmlReader()取得XML
SqlConnecting conn = new SqlConnection(CONNSTR);
SqlCommand cmd = new SqlCommand("select fname from employee for xml auto",conn);
conn.open();
XmlReader reader = cmd.ExecuteXmlReader();
……
################ 所取xml数据格式 #################
C#读写INI文件
摘自:伊图教程网[www.etoow.com]
http://www.etoow.com/html/2007-08/1187271505-1.html
虽然微软早已经建议在WINDOWS中用注册表代替INI文件,但是在实际应用中,INI文件仍然有用武之地,尤其现在绿色软件的流行,越来越多的程序将自己的一些配置信息保存到了INI文件中。 INI文件是文本文件,由若干节(section)组成,在每个带括号的标题下面,是若干个关键词(key)及其对应的值(Value)
[Section]
Key=Value
VC中提供了API函数进行INI文件的读写操作,但是微软推出的C#编程语言中却没有相应的方法,下面是一个C# ini文件读写类,从网上收集的,很全,就是没有对section的改名功能,高手可以增加一个。
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using System.Collections;
using System.Collections.Specialized;
namespace wuyisky{
/**/
///
/// IniFiles的类
///
public class IniFiles
{
public string FileName; //INI文件名
//声明读写INI文件的API函数
[DllImport("kernel32")]
private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, byte[] retVal, int size, string filePath);
//类的构造函数,传递INI文件名
public IniFiles(string AFileName)
{
// 判断文件是否存在
FileInfo fileInfo = new FileInfo(AFileName);
//Todo:搞清枚举的用法
if ((!fileInfo.Exists))
{ //|| (FileAttributes.Directory in fileInfo.Attributes))
//文件不存在,建立文件
System.IO.StreamWriter sw = new System.IO.StreamWriter(AFileName, false, System.Text.Encoding.Default);
try
{
sw.Write("#表格配置档案");
sw.Close();
}
catch
{
throw (new ApplicationException("Ini文件不存在"));
}
}
//必须是完全路径,不能是相对路径
FileName = fileInfo.FullName;
}
//写INI文件
public void WriteString(string Section, string Ident, string Value)
{
if (!WritePrivateProfileString(Section, Ident, Value, FileName))
{
throw (new ApplicationException("写Ini文件出错"));
}
}
//读取INI文件指定
public string ReadString(string Section, string Ident, string Default)
{
Byte[] Buffer = new Byte[];
int bufLen = GetPrivateProfileString(Section, Ident, Default, Buffer, Buffer.GetUpperBound(), FileName);
//必须设定0(系统默认的代码页)的编码方式,否则无法支持中文
string s = Encoding.GetEncoding().GetString(Buffer);
s = s.Substring(, bufLen);
return s.Trim();
}
//读整数
public int ReadInteger(string Section, string Ident, int Default)
{
string intStr = ReadString(Section, Ident, Convert.ToString(Default));
try
{
return Convert.ToInt32(intStr);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return Default;
}
}
//写整数
public void WriteInteger(string Section, string Ident, int Value)
{
WriteString(Section, Ident, Value.ToString());
}
//读布尔
public bool ReadBool(string Section, string Ident, bool Default)
{
try
{
return Convert.ToBoolean(ReadString(Section, Ident, Convert.ToString(Default)));
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return Default;
}
}
//写Bool
public void WriteBool(string Section, string Ident, bool Value)
{
WriteString(Section, Ident, Convert.ToString(Value));
}
//从Ini文件中,将指定的Section名称中的所有Ident添加到列表中
public void ReadSection(string Section, StringCollection Idents)
{
Byte[] Buffer = new Byte[];
//Idents.Clear();
int bufLen = GetPrivateProfileString(Section, null, null, Buffer, Buffer.GetUpperBound(),
FileName);
//对Section进行解析
GetStringsFromBuffer(Buffer, bufLen, Idents);
}
private void GetStringsFromBuffer(Byte[] Buffer, int bufLen, StringCollection Strings)
{
Strings.Clear();
if (bufLen != )
{
int start = ;
for (int i = ; i < bufLen; i++)
{
if ((Buffer[i] == ) && ((i - start) > ))
{
String s = Encoding.GetEncoding().GetString(Buffer, start, i - start);
Strings.Add(s);
start = i + ;
}
}
}
}
//从Ini文件中,读取所有的Sections的名称
public void ReadSections(StringCollection SectionList)
{
//Note:必须得用Bytes来实现,StringBuilder只能取到第一个Section
byte[] Buffer = new byte[];
int bufLen = ;
bufLen = GetPrivateProfileString(null, null, null, Buffer,
Buffer.GetUpperBound(), FileName);
GetStringsFromBuffer(Buffer, bufLen, SectionList);
}
//读取指定的Section的所有Value到列表中
public void ReadSectionValues(string Section, NameValueCollection Values)
{
StringCollection KeyList = new StringCollection();
ReadSection(Section, KeyList);
Values.Clear();
foreach (string key in KeyList)
{
Values.Add(key, ReadString(Section, key, ""));
}
}
////读取指定的Section的所有Value到列表中,
//public void ReadSectionValues(string Section, NameValueCollection Values,char splitString)
//{ string sectionValue;
// string[] sectionValueSplit;
// StringCollection KeyList = new StringCollection();
// ReadSection(Section, KeyList);
// Values.Clear();
// foreach (string key in KeyList)
// {
// sectionValue=ReadString(Section, key, "");
// sectionValueSplit=sectionValue.Split(splitString);
// Values.Add(key, sectionValueSplit[0].ToString(),sectionValueSplit[1].ToString());
// }
//}
//清除某个Section
public void EraseSection(string Section)
{
//
if (!WritePrivateProfileString(Section, null, null, FileName))
{
throw (new ApplicationException("无法清除Ini文件中的Section"));
}
}
//删除某个Section下的键
public void DeleteKey(string Section, string Ident)
{
WritePrivateProfileString(Section, Ident, null, FileName);
}
//Note:对于Win9X,来说需要实现UpdateFile方法将缓冲中的数据写入文件
//在Win NT, 2000和XP上,都是直接写文件,没有缓冲,所以,无须实现UpdateFile
//执行完对Ini文件的修改之后,应该调用本方法更新缓冲区。
public void UpdateFile()
{
WritePrivateProfileString(null, null, null, FileName);
}
//检查某个Section下的某个键值是否存在
public bool ValueExists(string Section, string Ident)
{
//
StringCollection Idents = new StringCollection();
ReadSection(Section, Idents);
return Idents.IndexOf(Ident) > -;
}
//确保资源的释放
~IniFiles()
{
UpdateFile();
}
}
}
按行读取txt
(函数名凭记忆写的,可能不准确,但差不多)
string = File.ReadAll(filename); 获得整个文本
string[] = File.ReadLines(filename); 获得整个文本,每一行作为一个string,放到数组,应该可以满足你的要求,除非文件特别大。
如果你是因为文件比较大,所以要只读取其中某几行的话,那就只能建立一个file对象,一行行的读,不需要的跳过,直到读到你需要的行,因为“行”这个东西没有办法定位。
如果这个需求量很大,可以考虑自己写一个索引文件,把行号对应的文件偏移量保存起来,下一次就直接seek到对应的位置开始读就可以了。
霸王
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace ReadLine_Demo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1\_Click(object sender, EventArgs e)
{
string\[\] stringlines = File.ReadAllLines("d:\\\\a.txt",Encoding.Default);
//foreach (string s in stringlines)
//{
// this.richTextBox1.Text = s;
// MessageBox.Show(s);
//}
for (int i = ; i < ; i++)
{
if (i < stringlines.Length)
{
this.richTextBox1.Text = stringlines\[i\].ToString();
MessageBox.Show(stringlines\[i\].ToString());
}
}
}
}
}
用C#读写ini配置文件
INI就是扩展名为"INI"的文件,其实他本身是个文本文件,可以用记事本打工,主要存放的是用户所做的选择或系统的各种参数.
INI文件其实并不是普通的文本文件.它有自己的结构.由若干段落(SECTION)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键字(KEYWORD)和一个等号,等号右边就是关键字的值(VALUE).例如:
[Section1]
KeyWord1 = Value1
KeyWord2 = Value2
…
[Section2]
KeyWord3 = Value3
KeyWord4 = Value4
C#命名空间中没有直接读写INI的类,当然如果你把INT当成文本文件用System.IO类来读写算我没说.
我现在介绍的是系统处理INI的方法.
虽然C#中没有,但是在"kernel32.dll"这个文件中有Win32的API函数--WritePrivateProfileString()和GetPrivateProfileString()
C#声明INI文件的写操作函数WritePrivateProfileString():
[DllImport( "kernel32" )]
private static extern long WritePrivateProfileString ( string section ,string key , string val
, string filePath ) ;
参数说明:section:INI文件中的段落;key:INI文件中的关键字;val:INI文件中关键字的数值;filePath:INI文件的完整的路径和名称。
C#申明INI文件的读操作函数GetPrivateProfileString():[DllImport("kernel32")]
private static extern int GetPrivateProfileString ( string section ,
string key , string def , StringBuilder retVal ,
int size , string filePath ) ;
参数说明:section:INI文件中的段落名称;key:INI文件中的关键字;def:无法读取时候时候的缺省数值;retVal:读取数值;size:数值的大小;filePath:INI文件的完整路径和名称。
下面是一个读写INI文件的类:
public class INIClass
{
public string inipath;
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section,string key,string val,string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath);
///
/// 文件路径
public INIClass(string INIPath)
{
inipath = INIPath;
}
///
/// 项目名称(如 [TypeName] )
/// 键
/// 值
public void IniWriteValue(string Section,string Key,string Value)
{
WritePrivateProfileString(Section,Key,Value,this.inipath);
}
///
/// 项目名称(如 [TypeName] )
/// 键
public string IniReadValue(string Section,string Key)
{
StringBuilder temp = new StringBuilder();
int i = GetPrivateProfileString(Section,Key,"",temp,,this.inipath);
return temp.ToString();
}
///
///
public bool ExistINIFile()
{
return File.Exists(inipath);
}
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章