FTP创建与操作
1,FTP服务创建于配置http://jingyan.baidu.com/article/0a52e3f4230067bf63ed7268.html,
2,FTP操作类
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Text;
- using System.Windows.Forms;
- namespace FTP
- {
- //使用时需要建立配置文件在配置文件里面写链接信息,
- public class FtpHelper
- {
- //基本设置
- public static string path = @"ftp://" + FtpHelper.GetAppConfig("path") + "/"; //目标路径
- public static string ftpip = FtpHelper.GetAppConfig("path"); //ftp IP地址
- static private string username = FtpHelper.GetAppConfig("username"); //ftp用户名
- static private string password = FtpHelper.GetAppConfig("password"); //ftp密码
- public static string GetAppConfig(string strKey)
- {
- foreach (string key in ConfigurationManager.AppSettings)
- {
- if (key == strKey)
- {
- string str = ConfigurationManager.AppSettings[strKey];
- return ConfigurationManager.AppSettings[strKey];
- }
- }
- return null;
- }
- public static string[] GetFileList()//已验证
- {
- //dir = dir + "/";//加斜线与不加斜线的区别是路径和文件名
- string[] downloadFiles;
- StringBuilder result = new StringBuilder();
- FtpWebRequest request;
- try
- {
- request = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
- request.UseBinary = true;
- request.Credentials = new NetworkCredential(username, password);//设置用户名和密码
- request.Method = WebRequestMethods.Ftp.ListDirectory;
- request.UseBinary = true;
- WebResponse response = request.GetResponse();
- StreamReader reader = new StreamReader(response.GetResponseStream());
- string line = reader.ReadLine();
- while (line != null)
- {
- result.Append(line);
- result.Append("\n");
- Console.WriteLine(line);
- line = reader.ReadLine();
- }
- // to remove the trailing '\n'
- result.Remove(result.ToString().LastIndexOf('\n'), 1);
- reader.Close();
- response.Close();
- return result.ToString().Split('\n');
- }
- catch (Exception ex)
- {
- Console.WriteLine("获取ftp上面的文件和文件夹:" + ex.Message);
- downloadFiles = null;
- return downloadFiles;
- }
- }
- /// <summary>
- /// 获取文件大小
- /// </summary>
- /// <param name="file">ip服务器下的相对路径</param>
- /// <returns>文件大小</returns>
- public static int GetFileSize(string file)//已验证
- {
- StringBuilder result = new StringBuilder();
- FtpWebRequest request;
- try
- {
- request = (FtpWebRequest)FtpWebRequest.Create(new Uri(path + file));
- request.UseBinary = true;
- request.Credentials = new NetworkCredential(username, password);//设置用户名和密码
- request.Method = WebRequestMethods.Ftp.GetFileSize;
- int dataLength = (int)request.GetResponse().ContentLength;
- return dataLength;
- }
- catch (Exception ex)
- {
- Console.WriteLine("获取文件大小出错:" + ex.Message);
- return -1;
- }
- }
- /// <summary>
- /// 文件上传
- /// </summary>
- /// <param name="filePath">原路径(绝对路径)包括文件名</param>
- /// <param name="objPath">目标文件夹:服务器下的相对路径 不填为根目录</param>
- public static void FileUpLoad(string filePath, string objPath = "")
- {
- try
- {
- string url = path;
- if (objPath != "")
- url += objPath + "/";
- try
- {
- FtpWebRequest reqFTP = null;
- //待上传的文件 (全路径)
- try
- {
- FileInfo fileInfo = new FileInfo(filePath);
- using (FileStream fs = fileInfo.OpenRead())
- {
- long length = fs.Length;
- reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(url + fileInfo.Name[0]));
- //设置连接到FTP的帐号密码
- reqFTP.Credentials = new NetworkCredential(username, password);
- //设置请求完成后是否保持连接
- reqFTP.KeepAlive = false;
- //指定执行命令
- reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
- //指定数据传输类型
- reqFTP.UseBinary = true;
- using (Stream stream = reqFTP.GetRequestStream())
- {
- //设置缓冲大小
- int BufferLength = 5120;
- byte[] b = new byte[BufferLength];
- int i;
- while ((i = fs.Read(b, 0, BufferLength)) > 0)
- {
- stream.Write(b, 0, i);
- }
- Console.WriteLine("上传文件成功");
- }
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine("上传文件失败错误为" + ex.Message);
- }
- finally
- {
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine("上传文件失败错误为" + ex.Message);
- }
- finally
- {
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine("上传文件失败错误为" + ex.Message);
- }
- }
- /// <summary>
- /// 删除文件
- /// </summary>
- /// <param name="fileName">服务器下的相对路径 包括文件名</param>
- public static void DeleteFileName(string fileName)//已验证
- {
- try
- {
- FileInfo fileInf = new FileInfo(ftpip + "" + fileName);
- string uri = path + fileName;
- FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
- // 指定数据传输类型
- reqFTP.UseBinary = true;
- // ftp用户名和密码
- reqFTP.Credentials = new NetworkCredential(username, password);
- // 默认为true,连接不会被关闭
- // 在一个命令之后被执行
- reqFTP.KeepAlive = false;
- // 指定执行什么命令
- reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;
- FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
- response.Close();
- }
- catch (Exception ex)
- {
- Console.WriteLine("删除文件出错:" + ex.Message);
- }
- }
- /// <summary>
- /// 删除文件
- /// </summary>
- /// <param name="fileName"></param>
- public static void Delete(string fileName)//已验证
- {
- try
- {
- string uri = path + fileName;
- FtpWebRequest reqFTP;
- reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
- reqFTP.Credentials = new NetworkCredential(username, password);
- reqFTP.KeepAlive = false;
- reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;
- string result = String.Empty;
- FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
- long size = response.ContentLength;
- Stream datastream = response.GetResponseStream();
- StreamReader sr = new StreamReader(datastream);
- result = sr.ReadToEnd();
- sr.Close();
- datastream.Close();
- response.Close();
- }
- catch (Exception ex)
- {
- //Insert_Standard_ErrorLog.Insert("FtpWeb", "Delete Error --> " + ex.Message + " 文件名:" + fileName);
- }
- }
- /// <summary>
- /// 删除文件夹
- /// </summary>
- /// <param name="folderName"></param>
- public static void RemoveDirectory(string folderName)//已验证
- {
- try
- {
- string uri = path + folderName;
- FtpWebRequest reqFTP;
- reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
- reqFTP.Credentials = new NetworkCredential(username,password);
- reqFTP.KeepAlive = false;
- reqFTP.Method = WebRequestMethods.Ftp.RemoveDirectory;
- string result = String.Empty;
- FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
- long size = response.ContentLength;
- Stream datastream = response.GetResponseStream();
- StreamReader sr = new StreamReader(datastream);
- result = sr.ReadToEnd();
- sr.Close();
- datastream.Close();
- response.Close();
- }
- catch (Exception ex)
- {
- //Insert_Standard_ErrorLog.Insert("FtpWeb", "Delete Error --> " + ex.Message + " 文件名:" + folderName);
- }
- }
- /// <summary>
- /// 获取当前目录下明细(包含文件和文件夹)
- /// </summary>
- /// <returns></returns>
- public static string[] GetFilesDetailList(string dir)
- {
- string[] downloadFiles;
- try
- {
- dir = dir + "/";
- StringBuilder result = new StringBuilder();
- FtpWebRequest ftp;
- ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(path+dir));
- ftp.Credentials = new NetworkCredential(username, password);
- ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
- WebResponse response = ftp.GetResponse();
- StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
- //while (reader.Read() > 0)
- //{
- //}
- string line = reader.ReadLine();
- //line = reader.ReadLine();
- //line = reader.ReadLine();
- while (line != null)
- {
- result.Append(line);
- result.Append("\n");
- line = reader.ReadLine();
- }
- result.Remove(result.ToString().LastIndexOf("\n"), 1);
- reader.Close();
- response.Close();
- return result.ToString().Split('\n');
- }
- catch (Exception ex)
- {
- downloadFiles = null;
- //Insert_Standard_ErrorLog.Insert("FtpWeb", "GetFilesDetailList Error --> " + ex.Message);
- return downloadFiles;
- }
- }
- public static string[] GetFilesDetailList()
- {
- string[] downloadFiles;
- try
- {
- StringBuilder result = new StringBuilder();
- FtpWebRequest ftp;
- ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
- ftp.Credentials = new NetworkCredential(username, password);
- ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
- WebResponse response = ftp.GetResponse();
- StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
- //while (reader.Read() > 0)
- //{
- //}
- string line = reader.ReadLine();
- //line = reader.ReadLine();
- //line = reader.ReadLine();
- while (line != null)
- {
- result.Append(line);
- result.Append("\n");
- line = reader.ReadLine();
- }
- result.Remove(result.ToString().LastIndexOf("\n"), 1);
- reader.Close();
- response.Close();
- return result.ToString().Split('\n');
- }
- catch (Exception ex)
- {
- downloadFiles = null;
- //Insert_Standard_ErrorLog.Insert("FtpWeb", "GetFilesDetailList Error --> " + ex.Message);
- return downloadFiles;
- }
- }
- public static void Upload()//已验证
- {
- OpenFileDialog openFileDialog = new OpenFileDialog();
- openFileDialog.Title = "选择文件";
- openFileDialog.Filter = "所有文件|*.*|rar文件|*.rar|文本文件|*.txt";
- openFileDialog.FileName = string.Empty;
- openFileDialog.FilterIndex = 1;
- openFileDialog.RestoreDirectory = true;
- openFileDialog.DefaultExt = "txt";
- DialogResult result = openFileDialog.ShowDialog();
- if (result == DialogResult.Cancel)
- {
- return;
- }
- string fileName = openFileDialog.FileName;
- FileInfo fileInf = new FileInfo(fileName);
- string uri = path + fileInf.Name;
- FtpWebRequest reqFTP;
- reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
- reqFTP.Credentials = new NetworkCredential(username, password);
- reqFTP.KeepAlive = false;
- reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
- reqFTP.UseBinary = true;
- reqFTP.ContentLength = fileInf.Length;
- int buffLength = 2048;
- byte[] buff = new byte[buffLength];
- int contentLen;
- FileStream fs = fileInf.OpenRead();
- try
- {
- Stream strm = reqFTP.GetRequestStream();
- contentLen = fs.Read(buff, 0, buffLength);
- while (contentLen != 0)
- {
- strm.Write(buff, 0, contentLen);
- contentLen = fs.Read(buff, 0, buffLength);
- }
- strm.Close();
- fs.Close();
- }
- catch (Exception ex)
- {
- //Insert_Standard_ErrorLog.Insert("FtpWeb", "Upload Error --> " + ex.Message);
- }
- }
- public static void Download(string fileName)//已验证
- {
- SaveFileDialog saveFileDialog = new SaveFileDialog();
- saveFileDialog.FileName = fileName;
- saveFileDialog.Filter = "所有文件(*.*)|(*.*)";
- if (saveFileDialog.ShowDialog() != DialogResult.OK)
- {
- return;
- }
- string filePath = saveFileDialog.FileName;
- FtpWebRequest reqFTP;
- try
- {
- FileStream outputStream = new FileStream(filePath, FileMode.Create);
- reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(path + fileName));
- reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
- reqFTP.UseBinary = true;
- reqFTP.Credentials = new NetworkCredential(username, password);
- FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
- Stream ftpStream = response.GetResponseStream();
- long cl = response.ContentLength;
- int bufferSize = 2048;
- int readCount;
- byte[] buffer = new byte[bufferSize];
- readCount = ftpStream.Read(buffer, 0, bufferSize);
- while (readCount > 0)
- {
- outputStream.Write(buffer, 0, readCount);
- readCount = ftpStream.Read(buffer, 0, bufferSize);
- }
- ftpStream.Close();
- outputStream.Close();
- response.Close();
- }
- catch (Exception ex)
- {
- //Insert_Standard_ErrorLog.Insert("FtpWeb", "Download Error --> " + ex.Message);
- }
- }
- /// <summary>
- /// 新建目录 上一级必须先存在
- /// </summary>
- /// <param name="dirName">服务器下的相对路径</param>
- public static void MakeDir(string dirName)//已验证
- {
- try
- {
- string uri = path + dirName;
- FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
- // 指定数据传输类型
- reqFTP.UseBinary = true;
- // ftp用户名和密码
- reqFTP.Credentials = new NetworkCredential(username, password);
- reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;
- FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
- response.Close();
- }
- catch (Exception ex)
- {
- Console.WriteLine("创建目录出错:" + ex.Message);
- }
- }
- /// <summary>
- /// 删除目录 上一级必须先存在
- /// </summary>
- /// <param name="dirName">服务器下的相对路径</param>
- public static void DelDir(string dirName)//已验证
- {
- try
- {
- string uri = path + dirName;
- FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
- // ftp用户名和密码
- reqFTP.Credentials = new NetworkCredential(username, password);
- reqFTP.Method = WebRequestMethods.Ftp.RemoveDirectory;
- FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
- response.Close();
- }
- catch (Exception ex)
- {
- Console.WriteLine("删除目录出错:" + ex.Message);
- }
- }
- /// <summary>
- /// 从ftp服务器上获得文件夹列表
- /// </summary>
- /// <param name="RequedstPath">服务器下的相对路径</param>
- /// <returns></returns>
- public static List<string> GetDirctory(string RequedstPath)//已验证
- {
- List<string> strs = new List<string>();
- try
- {
- string uri = path + RequedstPath; //目标路径 path为服务器地址
- FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
- // ftp用户名和密码
- reqFTP.Credentials = new NetworkCredential(username, password);
- reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
- WebResponse response = reqFTP.GetResponse();
- StreamReader reader = new StreamReader(response.GetResponseStream());//中文文件名
- string line = reader.ReadLine();
- while (line != null)
- {
- if (line.Contains("<DIR>"))
- {
- string msg = line.Substring(line.LastIndexOf("<DIR>") + 5).Trim();
- strs.Add(msg);
- }
- line = reader.ReadLine();
- }
- reader.Close();
- response.Close();
- return strs;
- }
- catch (Exception ex)
- {
- Console.WriteLine("获取目录出错:" + ex.Message);
- }
- return strs;
- }
- /// <summary>
- /// 从ftp服务器上获得文件列表
- /// </summary>
- /// <param name="RequedstPath">服务器下的相对路径</param>
- /// <returns></returns>
- public static List<string> GetFile(string RequedstPath)//已验证
- {
- List<string> strs = new List<string>();
- try
- {
- string uri = path + RequedstPath; //目标路径 path为服务器地址
- FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
- // ftp用户名和密码
- reqFTP.Credentials = new NetworkCredential(username, password);
- reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
- WebResponse response = reqFTP.GetResponse();
- StreamReader reader = new StreamReader(response.GetResponseStream());//中文文件名
- string line = reader.ReadLine();
- while (line != null)
- {
- if (!line.Contains("<DIR>"))
- {
- string msg = line.Substring(39).Trim();
- strs.Add(msg);
- }
- line = reader.ReadLine();
- }
- reader.Close();
- response.Close();
- return strs;
- }
- catch (Exception ex)
- {
- Console.WriteLine("获取文件出错:" + ex.Message);
- }
- return strs;
- }
- /// <summary>
- /// 获取当前目录下文件列表(仅文件)
- /// </summary>
- /// <returns></returns>
- public static string[] GetFileList1(string mask)
- {
- string[] downloadFiles;
- StringBuilder result = new StringBuilder();
- FtpWebRequest reqFTP;
- try
- {
- reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
- reqFTP.UseBinary = true;
- reqFTP.Credentials = new NetworkCredential(username, password);
- reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
- WebResponse response = reqFTP.GetResponse();
- StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
- string line = reader.ReadLine();
- while (line != null)
- {
- if (mask.Trim() != string.Empty && mask.Trim() != "*.*")
- {
- string mask_ = mask.Substring(0, mask.IndexOf("*"));
- if (line.Substring(0, mask_.Length) == mask_)
- {
- result.Append(line);
- result.Append("\n");
- }
- }
- else
- {
- result.Append(line);
- result.Append("\n");
- }
- line = reader.ReadLine();
- }
- result.Remove(result.ToString().LastIndexOf('\n'), 1);
- reader.Close();
- response.Close();
- return result.ToString().Split('\n');
- }
- catch (Exception ex)
- {
- downloadFiles = null;
- if (ex.Message.Trim() != "远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)。")
- {
- //Insert_Standard_ErrorLog.Insert("FtpWeb", "GetFileList Error --> " + ex.Message.ToString());
- }
- return downloadFiles;
- }
- }
- /// <summary>
- /// 获取当前目录下所有的文件夹列表(仅文件夹)
- /// </summary>
- /// <returns></returns>
- public static string[] GetDirectoryList()
- {
- string[] drectory = GetFilesDetailList();
- string m = string.Empty;
- foreach (string str in drectory)
- {
- int dirPos = str.IndexOf("<DIR>");
- if (dirPos > 0)
- {
- /*判断 Windows 风格*/
- m += str.Substring(dirPos + 5).Trim() + "\n";
- }
- else if (str.Trim().Substring(0, 1).ToUpper() == "D")
- {
- /*判断 Unix 风格*/
- string dir = str.Substring(54).Trim();
- if (dir != "." && dir != "..")
- {
- m += dir + "\n";
- }
- }
- }
- char[] n = new char[] { '\n' };
- return m.Split(n);
- }
- /// <summary>
- /// 判断当前目录下指定的子目录是否存在
- /// </summary>
- /// <param name="RemoteDirectoryName">指定的目录名</param>
- public static bool DirectoryExist(string RemoteDirectoryName)
- {
- string[] dirList = GetDirectoryList();
- foreach (string str in dirList)
- {
- if (str.Trim() == RemoteDirectoryName.Trim())
- {
- return true;
- }
- }
- return false;
- }
- /// <summary>
- /// 判断当前目录下指定的文件是否存在
- /// </summary>
- /// <param name="RemoteFileName">远程文件名</param>
- public static bool FileExist(string RemoteFileName)
- {
- string[] fileList = GetFileList1("*.*");
- foreach (string str in fileList)
- {
- if (str.Trim() == RemoteFileName.Trim())
- {
- return true;
- }
- }
- return false;
- }
- /// <summary>
- /// 改名
- /// </summary>
- public static void ReName(string currentFilename, string newFilename)//已验证
- {
- FtpWebRequest reqFTP;
- try
- {
- reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(path + currentFilename));
- string type = Path.GetExtension(currentFilename);//获取文件扩展名
- reqFTP.Method = WebRequestMethods.Ftp.Rename;
- reqFTP.RenameTo = newFilename+type;
- reqFTP.UseBinary = true;
- reqFTP.Credentials = new NetworkCredential(username, password);
- FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
- Stream ftpStream = response.GetResponseStream();
- ftpStream.Close();
- response.Close();
- }
- catch (Exception ex)
- {
- //Insert_Standard_ErrorLog.Insert("FtpWeb", "ReName Error --> " + ex.Message);
- }
- }
- /// <summary>
- /// 移动文件
- /// </summary>
- /// <param name="currentFilename"></param>
- /// <param name="newFilename"></param>
- public static void MovieFile(string currentFilename, string newDirectory)
- {
- ReName(currentFilename, newDirectory);
- }
- public static string FileOrDirectory(string path)
- {
- if (File.Exists(path))
- {
- return "文件";
- }
- else if (Directory.Exists(path))
- {
- return "文件夹";
- }
- else
- {
- return "错误";
- }
- }
- }
- }
FTP创建与操作的更多相关文章
- ABP创建数据库操作步骤
1 ABP创建数据库操作步骤 1.1 SimpleTaskSystem.Web项目中的Web.config文件修改数据库配置. <add name="Default" pro ...
- cmd 下登陆ftp及相关操作
cmd 下登陆ftp及相关操作 2011-08-09 20:34:28| 分类: 小技巧|字号 订阅 一.举例 假设FTP地址为“ 61.129.83.39”(大家试验的时候不要以这个FTP去试,应 ...
- 第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表、课程评论表、用户收藏表、用户消息表、用户学习表
第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表.课程评论表.用户收藏表.用户消息表.用户学习表 创建名称为ap ...
- c# ftp创建文件(非上传文件)
c# ftp创建文件(非上传文件) 一.奇葩的故事: 今天项目中遇到这么个奇葩的问题,ftp文件传输完成后要在ftp目录下另一个文件夹下创建对应的空文件,听说是为了文件的完整性,既然这么说,那么就必 ...
- R: vector 向量的创建、操作等。
################################################### 问题:创建.操作向量 18.4.27 怎么创建向量 vector,,及其相关操作 ??? 解 ...
- 基于commons-net实现ftp创建文件夹、上传、下载功能
原文:http://www.open-open.com/code/view/1420774470187 package com.demo.ftp; import java.io.FileInputSt ...
- JavaScript面向对象—对象的创建和操作
JavaScript面向对象-对象的创建和操作 前言 虽然说在JavaScript编程语言中,函数是第一公民,但是JavaScript不仅支持函数式编程,也支持面向对象编程.JavaScript对象设 ...
- 5. Git初始化及仓库创建和操作
4. Git初始化及仓库创建和操作 基本信息设置 1. 设置用户名 git config --global user.name 'itcastphpgit1' 2. 设置用户名邮箱 git confi ...
- KVM虚拟机管理——虚拟机创建和操作系统安装
1. 概述2. 交互式安装2.1 图形化-本地安装2.1.1 图形化本地CDROM安装2.2.2 图形化本地镜像安装2.2 命令行-本地安装2.2.1 命令行CDROM安装2.3 图形化-网络安装2. ...
随机推荐
- (转)IOS笔记 #pragma mark的用法
简单的来说就是为了方便查找和导航代码用的. 下面举例如何快速的定位到我已经标识过的代码. #pragma mark 播放节拍器 - (void) Run:(NSNumber *)tick{ ...
- canvas阴影
shadowOffsetx 阴影X轴的移动 shadowOffsety 阴影的y轴移动 shadowColor 阴影颜色 shadowBlur 模糊范围 <!DOCTYPE html>&l ...
- 初学springMVC搭建框架过程及碰到的问题
刚刚开始学spring框架,因为接了一个网站的项目,想用spring+springMVC+hibernate整合来实现它,现在写下搭建框架的过程及碰到的问题.希望给自己看到也能让大家看到不要踏坑. 一 ...
- MVC理解
1:MVC 中的@是什么意思? 类似于<% %>只不过它没有闭合的,这是MVC3.0的新特性2:关于ASP.NET MVC的Html.BeginForm()方法Html.BeginFo ...
- C#:获取时间年月日时分秒格式
//获取日期+时间 DateTime.Now.ToString(); // 2008-9-4 20:02:10 DateTime.Now.ToLocalTime().ToStri ...
- 经典:十步完全理解 SQL
经典:十步完全理解 SQL 来源:伯乐在线 链接:http://blog.jobbole.com/55086/ 很多程序员视 SQL 为洪水猛兽.SQL 是一种为数不多的声明性语言,它的运行方式完 ...
- php curl详解用法[真的详解]
目前为目最全的CURL中文说明了,学PHP的要好好掌握.有很多的参数.大部份都很有用.真正掌握了它和正 则,一定就是个采集高手了. 通用函数: function curl_file_get_conte ...
- matlab差分算法
今天实现了<一类求解方程全部根的改进差分进化算法>(by 宁桂英,周永权),虽然最后的实现结果并没有文中分析的那么好,但是本文依然是给了一个求解多项式全部实根的基本思路.思路是对的,利用了 ...
- Python核心编程读笔 10:函数和函数式编程
第11章 函数和函数式编程 一 调用函数 1 关键字参数 def foo(x): foo_suite # presumably does some processing with 'x' 标准调用 ...
- QF——网络之知识碎片
1.URL中文问题: URL不支持中文.若出现中文,需要对URL进行utf-8编码. NSString *urlString = [kULRSTRING stringByAddingPercentEs ...