我用C# 的System.IO.File.move(oldFile,newFile)来修改文件名,可是当newFile(新的文件名)长一点就会修改失败(例如:“加州《科学》二年级动画歌曲02 song_backbones”这个文件名就不成功)。如果是在文件上重命名就可以,程序就不行,这个如何解决?请教高手!
private void button3_Click(object sender, EventArgs e)
{
int num = 0;//初始化记录数
string fName;//旧文件绝对路径
string newName;//新文件绝对路径
string type; //文件后缀名
//遍历数据表
for (int i = 0; i < dataGridView1.Rows.Count-1; i++)
{
fName = textBox1.Text.Trim() + "\\" + Convert.ToString(dataGridView1.Rows[i].Cells[1].Value) + "\\" + Convert.ToString(dataGridView1.Rows[i].Cells[2].Value);//旧文件绝对路径赋值
type = fName.Substring(fName.LastIndexOf(".") + 1);//获取后缀名
//新文件完整路径
newName = textBox1.Text.Trim() + "\\" + Convert.ToString(dataGridView1.Rows[i].Cells[1].Value) + "\\" + dataGridView1.Rows[i].Cells[0].Value.ToString().Trim() + "." + type;
try
{
System.IO.File.Move(fName, newName); //创建新的文件,并赋予新的文件名
this.dataGridView1.Rows[i].Cells[3].Value = "成功";
}
catch (Exception)
{
this.dataGridView1.Rows[i].Cells[3].Value = "失败";
continue;
}
}
260个字符应该挺长的
string fName;//旧文件绝对路径
string newName;//新文件绝对路径
fName = "G:\\book\\b\\01037.swf";
newName = "G:\\book\\b\\第一册第二章1节:准备题.swf";
try
{ System.IO.File.Move(fName, newName);}
catch (Exception)
{ throw;}
但是这个还是会跳到catch中去,为什么?难道还要转编码格式?这个怎么转?
有可能修改这个长度限制吗?或者别的方法来容纳这个新的文件名的修改。
追答你例子里的文件名长度是可以的 ‘
可能是路径长度问题
也可能是中文编码问题 中文一旦乱码长度会变得很长
就算新文件是newName = "G:\\book\\b\\第一册第二章1节:准备题.swf"这个路径也不行,难道还要转编码格式?这个怎么转?
本回答被提问者采纳