Win10的應用商店中,可以安裝喜馬拉雅,並下載感興趣的音頻文件。下載的音頻如下圖所示, 有兩個json文件(圖1),其中一個json文件(2677885list.json)包含了所下載音頻的詳細信息,包括id和title(文件真實名稱);音頻文件是一串純數字的id作為名稱,沒有顯示音頻的真實名稱( ...
Win10的應用商店中,可以安裝喜馬拉雅,並下載感興趣的音頻文件。下載的音頻如下圖所示, 有兩個json文件(圖1),其中一個json文件(2677885list.json)包含了所下載音頻的詳細信息,包括id和title(文件真實名稱);音頻文件是一串純數字的id作為名稱,沒有顯示音頻的真實名稱(圖2)。可以利用這個id找到音頻文件的真實名稱,並給音頻文件重命名。對音頻文件重命名後的效果(圖3)。
本人用WinForm開發了一個應用,界面主要三個部分:1. 選擇音頻目錄;2. 選擇json文件;3. 開始。
1. 選擇音頻目錄:
1 private void bt_select_file_Click(object sender, EventArgs e) 2 { 3 FolderBrowserDialog path = new FolderBrowserDialog(); 4 path.ShowDialog(); 5 tb_file.Text = path.SelectedPath; 6 }View Code
2. 選擇json文件:
1 private void bt_select_json_Click(object sender, EventArgs e) 2 { 3 OpenFileDialog file = new OpenFileDialog(); 4 file.ShowDialog(); 5 tb_json.Text = file.FileName; 6 }View Code
3. 開始:
(1)定義FileInfo實體類
1 public class FileInfo 2 { 3 public string id { get; set;} 4 public string title { get; set; } 5 }View Code
(2)定義FileInfo的泛型類對象,讀取json文件,轉換成string類型,再反序列化為類對象
1 // 定義FileInfo的泛型類對象 2 List<FileInfo> fileInfo = new List<FileInfo>(); 3 4 // 讀取json文件,轉換成string類型,再反序列化為類對象 5 using (StreamReader file = File.OpenText(tb_json.Text)) 6 { 7 using (JsonTextReader reader = new JsonTextReader(file)) 8 { 9 JToken token = JToken.ReadFrom(reader); 10 string json = token.ToString(); 11 fileInfo = JsonConvert.DeserializeObject<List<FileInfo>>(json); 12 } 13 }View Code
(3)獲取目錄中的音頻文件
1 // 獲取目錄中的音頻文件 2 DirectoryInfo dircetoryInfo = new DirectoryInfo(tb_file.Text); 3 System.IO.FileInfo[] files = dircetoryInfo.GetFiles();View Code
(4)根據json中的id信息找到對應的文件,然後用title和.mp3組成新的文件名,最後用MoveTo方法進行重命名
1 // 根據json中的id信息找到對應的文件,然後用title和.mp3組成新的文件名,最後用MoveTo方法進行重命名 2 foreach (var file in files) 3 { 4 string[] sArray = file.Name.Split('.'); //獲取文件不帶擴展名的文件名 5 foreach (var item in fileInfo) 6 { 7 if (sArray[0] == item.id) 8 { 9 string destPath = Path.Combine(tb_file.Text, item.title + ".mp3"); //組合成新的文件名稱和原始路徑 10 file.MoveTo(destPath); // 文件重命名 11 } 12 } 13 }View Code