C#读取TXT文件,并重命名

Lemmmmmmmo丶 2014-12-11 11:31:38
我想用的方法是:读取TXT文件中照片的名字(每行一个名字已经写好的),把每个照片的名字都存到数组里面。问题是怎么把数组里面的名字牵连到每一个照片,替换掉照片的名字(名字和照片按顺序是一一对应的)。

例子:TXT文件中的名字是这样的


想要的结果是:

求大神帮忙,小弟只是初学C#,想做个小软件自己用。如果有大神能帮我把代码写出来,小弟再次拜谢!!!
...全文
453 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2014-12-12
  • 打赏
  • 举报
回复
哦 \需要转义,应该是"\\",这种错误你应该自己会改啊。
Lemmmmmmmo丶 2014-12-12
  • 打赏
  • 举报
回复
引用 5 楼 caozhy 的回复:
贴进去就能用
using System.IO;



Lemmmmmmmo丶 2014-12-12
  • 打赏
  • 举报
回复
引用 5 楼 caozhy 的回复:
贴进去就能用
using System.IO;


不行啊,总是报错。你看一下,这里的错误。。
threenewbee 2014-12-12
  • 打赏
  • 举报
回复
贴进去就能用 using System.IO;
Lemmmmmmmo丶 2014-12-12
  • 打赏
  • 举报
回复
引用 12 楼 ta_wuhen 的回复:
额,这个还没搞好?我记得之前你就问过,因为你的头像和我以前扣扣的头像一样,所以比较有印象
嗯嗯,我也记得你。我平时工作比较忙,只是偶尔有时间琢磨一下,毕竟我也只是个初学者。不过多谢帮忙,我已经做出来了。非常感谢。
rr_1724826853 2014-12-12
  • 打赏
  • 举报
回复
如何读取TXT文件、批量更改文件名 //读取txt文件 private void button1_Click(object sender, EventArgs e) { try { openFileDialog1.Filter = "文本文件(*.txt)|*.txt"; openFileDialog1.ShowDialog(); textBox1.Text = openFileDialog1.FileName; StreamReader SReader = new StreamReader(textBox1.Text, Encoding.Default); textBox2.Text = SReader.ReadToEnd(); } catch { MessageBox.Show("请选择文件"); } } //批量更改文件名 private void ChangeName() { int flag = 0; try { toolStripProgressBar1.Minimum = 0; toolStripProgressBar1.Maximum = listView1.Items.Count - 1; for (int i = 0; i < listView1.Items.Count; i++) { string path = listView1.Items[i].SubItems[4].Text; string sourcePath = path + listView1.Items[i].SubItems[0].Text; string newPath = path + listView1.Items[i].SubItems[1].Text; File.Copy(sourcePath, newPath); File.Delete(sourcePath); toolStripProgressBar1.Value = i; listView1.Items[i].SubItems[0].Text = listView1.Items[i].SubItems[1].Text; listView1.Items[i].SubItems[6].Text = "√成功"; } }//codego.net/tags/1/1/ catch(Exception ex) { flag++; MessageBox.Show(ex.Message); } finally { tsslError.Text = flag.ToString() + " 个错误"; } } //开始批量更名 private void 更名ToolStripMenuItem_Click(object sender, EventArgs e) { if (listView1.Items.Count > 0) { for (int i = 0; i < listView1.Items.Count; i++) { listView1.Items[i].SubItems[6].Text = ""; } tsslError.Text = ""; td = new Thread(new ThreadStart(ChangeName)); td.Start(); } }
我现在在路上 2014-12-12
  • 打赏
  • 举报
回复
其实你这就是保存个状态(图片和数据对应的状态)而已。 那怎么才能找到图片呢? 路径。所以你只要吧路径和数据对应就可以了。 如何对应呢? 方式很多。比如使用序列化直接保存数组对象或XML保存关系等等等,这些都是以文件为的载体保存的。 用TXT保存的话,你就要知道如何读,且读的结果和写的时候一致。 这就要你定义一个格式了。如: 数字=文件路径 的形式保存,一行一个。读的时候使用ReadLine ,并以“=”切断字符串,获取数字和路径。 所以文件的读写你要看看,这个应该是最简单的I0操作了
我现在在路上 2014-12-12
  • 打赏
  • 举报
回复
额,这个还没搞好?我记得之前你就问过,因为你的头像和我以前扣扣的头像一样,所以比较有印象
SmileSkyNet 2014-12-12
  • 打赏
  • 举报
回复
代码我就不写了,思路给你: string[] filepaths; 前行读取txt 读取一行把这行加到filepaths中 然后 int i=1; foreach(string item in filepaths) { File.Move(item,新路径+"\\"+i.ToString()+".jpg"; }
Lemmmmmmmo丶 2014-12-12
  • 打赏
  • 举报
回复
引用 9 楼 rr_1724826853 的回复:
如何读取TXT文件、批量更改文件名 //读取txt文件 private void button1_Click(object sender, EventArgs e) { try { openFileDialog1.Filter = "文本文件(*.txt)|*.txt"; openFileDialog1.ShowDialog(); textBox1.Text = openFileDialog1.FileName; StreamReader SReader = new StreamReader(textBox1.Text, Encoding.Default); textBox2.Text = SReader.ReadToEnd(); } catch { MessageBox.Show("请选择文件"); } } //批量更改文件名 private void ChangeName() { int flag = 0; try { toolStripProgressBar1.Minimum = 0; toolStripProgressBar1.Maximum = listView1.Items.Count - 1; for (int i = 0; i < listView1.Items.Count; i++) { string path = listView1.Items[i].SubItems[4].Text; string sourcePath = path + listView1.Items[i].SubItems[0].Text; string newPath = path + listView1.Items[i].SubItems[1].Text; File.Copy(sourcePath, newPath); File.Delete(sourcePath); toolStripProgressBar1.Value = i; listView1.Items[i].SubItems[0].Text = listView1.Items[i].SubItems[1].Text; listView1.Items[i].SubItems[6].Text = "√成功"; } }//codego.net/tags/1/1/ catch(Exception ex) { flag++; MessageBox.Show(ex.Message); } finally { tsslError.Text = flag.ToString() + " 个错误"; } } //开始批量更名 private void 更名ToolStripMenuItem_Click(object sender, EventArgs e) { if (listView1.Items.Count > 0) { for (int i = 0; i < listView1.Items.Count; i++) { listView1.Items[i].SubItems[6].Text = ""; } tsslError.Text = ""; td = new Thread(new ThreadStart(ChangeName)); td.Start(); } }
tsslError是什么?
Lemmmmmmmo丶 2014-12-11
  • 打赏
  • 举报
回复
引用 3 楼 caozhy 的回复:
foreach (var item in File.ReadAllLines("1.txt").Zip(Directory.GetFiles("c:\\images", "*.*"), (newname, oldname) => new { newname, oldname }))
{
    File.Move(oldname, string.Concat(Path.GetDirectoryName(oldname), "\", newname, Path.GetExtension(oldname)));
}
有点头大。。能稍微解释下这段代码怎么用么?
threenewbee 2014-12-11
  • 打赏
  • 举报
回复
foreach (var item in File.ReadAllLines("1.txt").Zip(Directory.GetFiles("c:\\images", "*.*"), (newname, oldname) => new { newname, oldname }))
{
    File.Move(oldname, string.Concat(Path.GetDirectoryName(oldname), "\", newname, Path.GetExtension(oldname)));
}
Lemmmmmmmo丶 2014-12-11
  • 打赏
  • 举报
回复
引用 1 楼 vbload 的回复:
"把每个照片的名字"原来是什么? 还是不管它的名字,都存入数组中,array[0]就是你想命名为0的,其它类似?
原来照片的名字是一些日期数字什么的。我只是举个例子。意思就是把照片的名字改成1,2,3,4。。。。这个样子的。。
网络菜鸟00 2014-12-11
  • 打赏
  • 举报
回复
"把每个照片的名字"原来是什么? 还是不管它的名字,都存入数组中,array[0]就是你想命名为0的,其它类似?

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧