关于mds3.04中二战飞机图片问题的解决

关于mds3.04中二战飞机图片问题的解决

各国在游戏中兵模图片的配置文件(*.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次运行时,空格前输入应是当前新建文件夹中的文件名,后是你要修改的文件名。

你可能感兴趣的:(关于mds3.04中二战飞机图片问题的解决)