隨筆 - 147  文章 - 71  trackbacks - 0
          <2009年11月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(1)

          隨筆分類(146)

          隨筆檔案(147)

          文章分類(28)

          文章檔案(28)

          喜歡的Blog

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          各國在游戲中兵模圖片的配置文件(*.spr)在gfx/map/units目錄下,主要有USA、JAP、GER、ITA、FRA、ENG、MIN(未定義政權)和SOV這幾個國家,而其中只有SOV的飛機圖片是現代的,要把所有國家的飛機圖片全改回來,要花費很大的精力。如果使用編程方法,就可以大大提高效率。經過對spr文件觀察發現,有2種方案可以列入考慮范圍:1.將除SOV外的其它國家的T-BOMBER和T-FIGHTER的spr文件拷貝到其它分區的新建文件夾中,然后通過程序將這些文件中內容全部替換為對應SOV文件中的內容,最后在復制粘貼回原來的文件夾。2.將SOV對應的的T-BOMBER和T-FIGHTER的spr文件拷貝到其它分區的新建文件夾中,然后通過程序將這些文件名替換為其它國家的名字,最后在分步復制粘貼回原來的文件夾。以下程序采用的是第2種方案。

          import java.io.*;
          import java.util.*;

          public class RenameFile {
              
          public static void main(String args[]) throws IOException {
                  BufferedReader stdin 
          = new BufferedReader(new InputStreamReader(
                          System.in));
                  String line 
          = stdin.readLine();
                  StringTokenizer st 
          = new StringTokenizer(line);
                  String str 
          = st.nextToken();    //    原來文件名
                  String newstr = st.nextToken();    //    新的文件名
                  File fl = new File("E:\\units"); // 這里寫上發替換的文件夾路徑,注意使用雙斜杠
                  String[] files = fl.list();
                  File f 
          = null;
                  
          for (String file : files) {
                      f 
          = new File(fl, file);// 注意,這里一定要寫成File(fl,file)如果寫成File(file)是行不通的,一定要全路徑
                      String filename = f.getName();

                      
          /*
                       * 修改文件內容
                       
          */

                      
          /*FileReader in = new FileReader(f);
                      // 獲得該文件的長度
                      int size = (int) f.length();
                      // 設置一個變量,對該文件中已被讀取的字符計數,初始化該變量的值為0
                      int chars_read = 0;
                      // 從該文件中讀取數據
                      char[] data = new char[size];
                      while (in.ready())
                          chars_read += in.read(data, chars_read, size - chars_read);
                      String s = new String(data, 0, chars_read);
                      // System.out.println(s);
                      in.close();

                      int k = s.indexOf(newstr);
                      while (k > -1) {
                          s = s.substring(0, k) + str + s.substring(k + 3);
                          k = s.indexOf(newstr);
                      }
                      // System.out.println(s);

                      FileWriter out = new FileWriter(f);
                      out.write(s);
                      out.close();
          */


                      
          // 批量重命名文件
                      int k = filename.indexOf(str);
                      
          if (k > -1{
                          String newfilename 
          = filename.substring(0, k) + newstr
                                  
          + filename.substring(k + 3);
                          System.out.println(filename 
          + " " + newfilename);
                          f.renameTo(
          new File(fl.getAbsolutePath() + "\\"
                                  
          + filename.replace(filename, newfilename)));// 這里可以反復使用replace替換,當然也可以使用正則表達式來替換了
                      }

                  }

              }

          }
          運行方式:
          第一次:輸入SOV USA回車,然后把修改后的文件復制粘貼回原來的文件夾。
          第二次:輸入USA JAP回車,然后把修改后的文件復制粘貼回原來的文件夾。
          ……
          注意:第n次運行時,空格前輸入應是當前新建文件夾中的文件名,后是你要修改的文件名。
          posted on 2009-11-09 20:35 飛翔天使 閱讀(1421) 評論(0)  編輯  收藏 所屬分類: Game
          主站蜘蛛池模板: 安泽县| 东乌珠穆沁旗| 千阳县| 宝兴县| 东光县| 广安市| 文昌市| 新田县| 新龙县| 崇仁县| 霞浦县| 沈阳市| 武川县| 永德县| 阿拉善盟| 邻水| 内丘县| 澄城县| 南城县| 城固县| 平顺县| 永修县| 布尔津县| 珲春市| 桑日县| 行唐县| 临江市| 滨州市| 鹤壁市| 荣昌县| 潼南县| 南川市| 项城市| 繁昌县| 东山县| 澜沧| 静宁县| 神农架林区| 扶风县| 南康市| 鹿泉市|