C#代码改文件名,求指教
由于底层接收端限制文件名长度,所以发端发送文件时就要判断,若文件名超长,就截掉超过的那部分,只保留限制字符内的文件名,也就是改文件名。
限制是128字节(也就是汉字64个,字母或数字128个),包括文件后缀名,我想请问,有没有一种方法可以按限制长度来截取并重命名文件,但不修改文件路径。
[解决办法]
那如果文件路径本身就超过限制了呢?
[解决办法]
改名用FileInfo 的 MoveTo(截取后的文件名)
http://www.cnblogs.com/ylemzhang/archive/2010/10/11/1848120.html
[解决办法]
var encoding = Encoding.GetEncoding("GB2312");var path = "C:\\一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一.txt";//153while (encoding.GetByteCount(path) > 128){ var name = Path.GetFileNameWithoutExtension(path); path = Path.GetDirectoryName(path) + "\\" + name.Substring(0, name.Length - 1) + Path.GetExtension(path);}var bytes = encoding.GetBytes(path);
[解决办法]
稍微修改下
var encoding = Encoding.GetEncoding("GB2312");var path = "C:\\a\\一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一.txt";//153var np = path;while (encoding.GetByteCount(np) > 128){ var name = Path.GetFileNameWithoutExtension(np); np = Path.GetDirectoryName(np).TrimEnd('\\') + "\\" + name.Substring(0, name.Length - 1) + Path.GetExtension(np);}File.Move(path, np);var bytes = encoding.GetBytes(np);
[解决办法]
这个问题不难吧。先转化成字节,在截取,再转化成字符串。没什么难度吧!