山那边是海 发表于 2015-1-16 22:21:27

ASP.NET网页设计ASP.NET教程:相对路径与绝对路径的拼合...

你觉得学习.NET怎么样,我懂的少,问的可能很幼稚,见笑了啊:)</p>弁言在做文件路径处置时,常常必要对一个路径的绝对路径举行操纵,那末怎样拼合绝对路径以天生新的相对路径呢?
Path.Combine()办法我们晓得System.IO.Path是专门用来处置路径的静态类,它有一个Combine()办法就是用于拼接路径的,我们来测试一下其拼接效果。
我们利用一个命令路程序举行测试,这里要测试相对文件C:abc123avatar.html的一系列绝对路径,测试代码以下:
classProgram
{
staticstringpath=@"C:abc123avatar.html";
staticvoidMain(string[]args)
{
Console.WriteLine(path);
Console.WriteLine("输出绝对路径以完成兼并:");
Console.WriteLine();
while(true)
{
Console.WriteLine("兼并为:"+兼并路径(Console.ReadLine()));
Console.WriteLine();
}
}
privatestaticstring兼并路径(stringp)
{
returnPath.Combine(Path.GetDirectoryName(path),p);
}
}
个中“兼并路径”办法的功效是先猎取文件的地点目次,再与绝对路径拼合。
测试了局:

能够看到,惯例的路径拼合没有成绩,可是输出“..”就没有被准确处置为下级目次,而是间接举行了兼并,这不是我希冀看到的。
如何做才干撑持“..”情势的绝对路径呢?
使用Uri工具的机关函数我发明Uri工具在机关时能够传进一个基于的Uri及一个绝对路径以机关为新的Uri,而我们能够以“file://……”的情势来暗示当地文件路径,让我们修改一下代码,举行一下绝对Uri的拼合测试。
修改后的代码:
classProgram
{
//staticstringpath=@"C:abc123avatar.html";
staticstringpath=@"file:///C:/abc/123/avatar.html";
staticvoidMain(string[]args)
{
Console.WriteLine(path);
Console.WriteLine("输出绝对路径以完成兼并:");
Console.WriteLine();
while(true)
{
//Console.WriteLine("兼并为:"+兼并路径(Console.ReadLine()));
Console.WriteLine("兼并为:"+兼并Uri(Console.ReadLine()));
Console.WriteLine();
}
}
privatestaticstring兼并路径(stringp)
{
returnPath.Combine(Path.GetDirectoryName(path),p);
}
privatestaticstring兼并Uri(stringp)
{
returnnewUri(newUri(path),p).AbsoluteUri;
}
}
测试了局:

好极了,完善撑持“../”情势的绝对路径!
完美那末接上去的事情就是将路径转换为Uri情势,然后拼合绝对路径,再转换回路径情势就能够了。
转换的时分仅仅是接纳字符串处置的办法,修改后的代码以下:
classProgram
{
staticstringpath=@"C:abc123avatar.html";
staticvoidMain(string[]args)
{
Console.WriteLine(path);
Console.WriteLine("输出绝对路径以完成兼并:");
Console.WriteLine();
while(true)
{
Console.WriteLine("兼并为:"+兼并路径(Console.ReadLine()));
Console.WriteLine();
}
}
privatestaticstring兼并路径(stringp)
{
returnnewUri(newUri("file:///"+path.Replace("","/")),p.Replace("","/")).AbsoluteUri.Substring(8).Replace("/","");
}
}
测试了局:

结语了局很使人中意,但我总以为这是个土方剂、盗窟举措,谁有更烦琐、正统点的办法吗?
感激天方这么快就提出了正统的写法:Path.GetFullPath(Path.Combin(@"C:ac","...text"));
我之前找了那末久,又折腾那末久,才弄出个盗窟的来,其实汗颜啊,呵呵。
也许唯一可以让世人留恋Java的理由就剩下它的王牌——跨平台。

飘灵儿 发表于 2015-1-16 23:51:12

ASP.NET网页设计ASP.NET教程:相对路径与绝对路径的拼合...

是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。

小魔女 发表于 2015-1-20 12:38:58

提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。

深爱那片海 发表于 2015-1-29 07:09:39

但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。

透明 发表于 2015-2-14 09:47:20

最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。

因胸联盟 发表于 2015-3-4 05:26:55

Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。

飘飘悠悠 发表于 2015-3-11 17:31:47

现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。

柔情似水 发表于 2015-3-27 07:10:56

在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
页: [1]
查看完整版本: ASP.NET网页设计ASP.NET教程:相对路径与绝对路径的拼合...