2 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
基于您的方法的快速解決方案:創(chuàng)建一個(gè)文件過(guò)濾器,然后將其與您的FileChooser:
FileFilter myFilter = new FileFilter() {
@Override
public boolean accept(File file) {
javax.swing.filechooser.FileFilter ef =
new FileNameExtensionFilter("Image Files", "*.png", "*.jpg", "*.gif", "*.bmp", "*.jpeg");
return ef.accept(file) && (file.length() <= (1024L * 1024L));
}
};
fileChooser.setFileFilter(myFilter);
一個(gè)更詳細(xì)的例子是在一個(gè)單獨(dú)的類(lèi)中定義文件過(guò)濾器:
public class MaxSizeFileFilter implements FileFilter {
private final static long MAX_SIZE = (1024L * 1024L);
private final static String SUFFIX_REGEX = ".*\\.(png|jpg|gif|bmp|jpeg)";
@Override
public boolean accept(File file) {
try {
return file != null &&
file.isFile() &&
file.canRead() &&
file.getName().matches(SUFFIX_REGEX) &&
file.length() <= MAX_SIZE;
}
catch (SecurityException exc) {
System.err.println(exc.getMessage());
return false;
}
}
}

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
我不熟悉 File 類(lèi),但是文檔似乎表明 getTotalSpace 方法返回文件大小(以字節(jié)為單位)。
如果這是正確的,那么您可以將 mb 的大小與 1024 進(jìn)行比較,如果超過(guò)此值則拒絕它。
粗略的例子。
boolean valid = false;
final long sizeLimit = 1024 * 8;
while(!valid){
selectedFile = fileChooser.showOpenDialog(null);
if(sizeLimit > selecteFile.getTotalSpace()){
valid = true;
}
}
添加回答
舉報(bào)