如何使用MATLAB重命名具有不同文件扩展名的文件?

时间:2017-08-10 04:47:56

标签: matlab

我有一个包含106张图片的文件夹。其中,15个具有“.jpg”扩展名,另外91个具有“.tif”扩展名。我想按顺序重命名文件,以便它们都具有'.tif'扩展名。我可以使用以下代码重命名具有相同扩展名(.jpg)的文件:

 a = 'D\newfolder';
 A = dir(fullfile(a,'*.jpg'));
 fileNames = {A.name};
 for iFile = 1:numel(A)
    newName = fullfile(a,sprintf('%0d.jpg',iFile));
    movefile(fullfile(a,fileNames{iFile}),newName);
end

此代码适用于带有“.jpg”扩展名的图片。但是,现在我在同一个文件夹中同时包含'.tif'和'.jpg'文件扩展名。我想重命名它们并在循环中对它们应用进一步的操作。如何修改此代码以按顺序重命名'.tif'和'.jpg'文件,并将'.tif'作为重命名文件的扩展名?

1 个答案:

答案 0 :(得分:1)

这是一个与当前解决方案保持一致的解决方案:

import java.lang.*;
import java.math.*;
import java.util.regex.*;

class Pattern {
    public static void main(String args[]) {
        int count = 0;
        String regex = "(//d+?)//1)";
        Pattern p = Pattern.compile(regex); //cannot find symbol compile
        BigDecimal b = new BigDecimal("1");
        for (int i = 1; i <= 10; i++) {
            BigDecimal b1 = new BigDecimal(i);
            String elem = b.divide(b1, 15, RoundingMode.HALF_UP).toString();
            Matcher match = p.matcher(elem); //cannot find symbol matcher
            while (match.find()) {
                int x = match.start() - match.end();
                if (x > count)
                    count = x;
            }
        }
        System.out.println("the highest count is" + count);
    }    
} 

A = dir(fullfile(a,'*.jpg')); B = dir(fullfile(a,'*.tif')); fileNames = {A.name,B.name}; for iFile = 1:numel(fileNames) newName = fullfile(a,sprintf('%0d.tif',iFile)); movefile(fullfile(a,fileNames{iFile}),newName); end 是您已定义的文件夹。

<强>更新

文件扩展名&#39; .jpg&#39;和&#39; .tif&#39;只是指示该文件中预期的图像格式的标签。虽然只是标签,但可能是错误的。例如,如果你给这些文件一个&#39; .txt&#39;扩展它们不会突然变成文本文件,尽管您更有可能在文本编辑器中打开它们并进行验证。

话虽这么说,许多图像加载器将首先直接从文件(而不是扩展名)验证图像格式,并使用相应的编解码器来加载它。因此,格式和文件扩展名的不匹配在实践中可能并不重要,但是你有点依赖机会。

然而,您可以直接将jpeg格式的图像转码为tiff格式。在The Mathworks site提出了类似的问题。

基本上,您会读取该文件,然后以新格式写入。以下是如何更改上述代码的方法:

a