我很难找到正确的正则表达式来读取 ppm 文件尺寸。我不知道是因为我的正则表达式错误还是我滥用了 Pattern.compile 方法,但我得到了 java.util.NoSuchElementException。在我的正则表达式和它的代码下方。它读取整个文件,因为我的正则表达式总是返回 null。谢谢。
package projet;
import java.awt.Color;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;
public class Ppm extends File{
private Dimensions d;
private Color[][] p;
public Ppm(String pathname) {
super(pathname);
}
public void read(){
try {
Scanner s=new Scanner(new FileReader(this.getPath()));
while(s.findInLine(Pattern.compile("/^\\d* \\d*\\s$/")) == null && s.hasNext()){
System.out.println(s.nextLine());
}
s.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(Ppm.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("Check filepath.");
}
}
}
这是我的示例文件:https ://www.dropbox.com/s/z35dvi90zdfkws0/carte1.ppm?dl=0
编辑 :
我尝试了一个匹配器,但它仍然无法正常工作,遵循更正的正则表达式。这是我的代码,它从不匹配模式......
public class Ppm extends File{
private Dimensions d;
private Color[][] p;
public Ppm(String pathname) {
super(pathname);
d=new Dimensions(0, 0);
}
public void read(){
try {
Scanner s=new Scanner(new FileReader(this.getPath()));
Pattern p=Pattern.compile("^\\d+ \\d+\\s$");
Matcher m;
while(s.hasNext()){
m=p.matcher(s.nextLine());
if(m.matches()){
System.out.println("Found");
}
}
//System.out.println("W : "+d.getWidth()+" H: "+d.getHeight());
} catch (FileNotFoundException ex) {
Logger.getLogger(Ppm.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("Check filepath.");
}
}
}