java 保存文件对话框的使用以及文件过滤器(FileDialog、JFileChooser)
2013-10-30 11:35
585 查看
1.FileDialog使用方法:
FileDialog fd=new FileDialog(new Frame(),"测试",FileDialog.LOAD);
FilenameFilter ff=new FilenameFilter(){
public boolean accept(File dir, String name) {
if (name.endsWith("jpg")){
return true;
}
return false;
}
};
fd.setFilenameFilter(ff);
fd.setVisible(true);
System.out.println(fd.getDirectory()+fd.getFile());
但在Windows中FileDialog + FilenameFilter无法正常工作, jdoc的原注释为:Filename filters do not function in Sun's reference implementation for Microsoft Windows.
2.FileDialog + FilenameFilter可以用JFileChooser + javax.swing.filechooser.FileFilter 来代替,jdoc中的例子如下:
JFileChooser chooser = new JFileChooser();
// Note: source for ExampleFileFilter can be found in FileChooserDemo,
// under the demo/jfc directory in the Java 2 SDK, Standard Edition.
ExampleFileFilter filter = new ExampleFileFilter();
filter.addExtension("jpg");
filter.addExtension("gif");
filter.setDescription("JPG & GIF Images");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(parent);
if(returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You chose to open this file: " +
chooser.getSelectedFile().getName());
}
转应用实例:
JFileChooser filechooser = new JFileChooser();//创建文件选择器
filechooser.setCurrentDirectory(new File("."));//设置当前目录
filechooser.setAcceptAllFileFilterUsed(false);
//显示所有文件
filechooser.addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {
public boolean accept(File f) {
return true;
}
public String getDescription() {
return "所有文件(*.*)";
}
});
//显示JAVA源文件
filechooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
public boolean accept(File f) { //设定可用的文件的后缀名
if(f.getName().endsWith(".java")||f.isDirectory()){
return true;
}
return false;
}
public String getDescription() {
return "JAVA源程序(*.java)";
}
});
java--FilenameFilter文件过滤器
java中有一个FilenameFilter的接口,能够过滤得到指定类型的文件或者目录,其中必须重写accept(File file,String path)方法
public class DirFilter implements FilenameFilter{
private String type;
public DirFilter(String tp){
this.type=tp;
}
public boolean accept(File fl,String path) throws Exception{
File file=new File(path);
String filename=file.getName();
return filename.indexOf(type)!=-1;
}
}
具体应用方法:File假如是一个Directory,可以通过list()方法得到这个目录下所有的文件和目录的名称数组,list()方法,一种是没有参数,一种是实现FilenameFilter接口的参数,例如要获得一个指定目录下的所有的java文件,就要使用第二种带参数的list()方法
public class Test{
public static void main(String[] args){
try{
//指定目录(“.”表示当前目录)
File dir=new File(".");
String[] names;
//获得所有java文件
DirFilter filter=new DirFilter(".java");
names=dir.list(filter);
//打印所有java文件名称
for(int i=0;i<names.length;i++){
System.out.println("i:"+i+" name:"+names[i]);
}
}catch(Exception e){
e.printStackTrace();
}
}
}
其中这里还可以将DirFilter类作为Test的一个匿名内部类来实现,例如:
public class Test{
//type:必须声明为final类型,作为一个匿名内部类,访问的变量都必须声明为final类型
public static FilenameFilter filter(final String type) throws Exception{
return new FilenameFilter(){
public boolean accept(File file,Stirng path){
String filename=new File(path).getName();
return filename.indexOf(type)!=-1;
}
};
}
public static void main(String[] args){
try{
File file=new File(".");
String names[];
names=file.list(filter(".java");
for(int i=0;i<names.length;i++){
System.out.println("i:"+i+" filename:"+names[i]);
}
catch(Exception e){
e.printStackTrace();
}
}
}
FileDialog fd=new FileDialog(new Frame(),"测试",FileDialog.LOAD);
FilenameFilter ff=new FilenameFilter(){
public boolean accept(File dir, String name) {
if (name.endsWith("jpg")){
return true;
}
return false;
}
};
fd.setFilenameFilter(ff);
fd.setVisible(true);
System.out.println(fd.getDirectory()+fd.getFile());
但在Windows中FileDialog + FilenameFilter无法正常工作, jdoc的原注释为:Filename filters do not function in Sun's reference implementation for Microsoft Windows.
2.FileDialog + FilenameFilter可以用JFileChooser + javax.swing.filechooser.FileFilter 来代替,jdoc中的例子如下:
JFileChooser chooser = new JFileChooser();
// Note: source for ExampleFileFilter can be found in FileChooserDemo,
// under the demo/jfc directory in the Java 2 SDK, Standard Edition.
ExampleFileFilter filter = new ExampleFileFilter();
filter.addExtension("jpg");
filter.addExtension("gif");
filter.setDescription("JPG & GIF Images");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(parent);
if(returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You chose to open this file: " +
chooser.getSelectedFile().getName());
}
转应用实例:
JFileChooser filechooser = new JFileChooser();//创建文件选择器
filechooser.setCurrentDirectory(new File("."));//设置当前目录
filechooser.setAcceptAllFileFilterUsed(false);
//显示所有文件
filechooser.addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {
public boolean accept(File f) {
return true;
}
public String getDescription() {
return "所有文件(*.*)";
}
});
//显示JAVA源文件
filechooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
public boolean accept(File f) { //设定可用的文件的后缀名
if(f.getName().endsWith(".java")||f.isDirectory()){
return true;
}
return false;
}
public String getDescription() {
return "JAVA源程序(*.java)";
}
});
java--FilenameFilter文件过滤器
java中有一个FilenameFilter的接口,能够过滤得到指定类型的文件或者目录,其中必须重写accept(File file,String path)方法
public class DirFilter implements FilenameFilter{
private String type;
public DirFilter(String tp){
this.type=tp;
}
public boolean accept(File fl,String path) throws Exception{
File file=new File(path);
String filename=file.getName();
return filename.indexOf(type)!=-1;
}
}
具体应用方法:File假如是一个Directory,可以通过list()方法得到这个目录下所有的文件和目录的名称数组,list()方法,一种是没有参数,一种是实现FilenameFilter接口的参数,例如要获得一个指定目录下的所有的java文件,就要使用第二种带参数的list()方法
public class Test{
public static void main(String[] args){
try{
//指定目录(“.”表示当前目录)
File dir=new File(".");
String[] names;
//获得所有java文件
DirFilter filter=new DirFilter(".java");
names=dir.list(filter);
//打印所有java文件名称
for(int i=0;i<names.length;i++){
System.out.println("i:"+i+" name:"+names[i]);
}
}catch(Exception e){
e.printStackTrace();
}
}
}
其中这里还可以将DirFilter类作为Test的一个匿名内部类来实现,例如:
public class Test{
//type:必须声明为final类型,作为一个匿名内部类,访问的变量都必须声明为final类型
public static FilenameFilter filter(final String type) throws Exception{
return new FilenameFilter(){
public boolean accept(File file,Stirng path){
String filename=new File(path).getName();
return filename.indexOf(type)!=-1;
}
};
}
public static void main(String[] args){
try{
File file=new File(".");
String names[];
names=file.list(filter(".java");
for(int i=0;i<names.length;i++){
System.out.println("i:"+i+" filename:"+names[i]);
}
catch(Exception e){
e.printStackTrace();
}
}
}
相关文章推荐
- java 保存文件对话框的使用以及文件过滤器(FileDialog、JFileChooser)
- java 保存文件对话框的使用以及文件过滤器(FileDialog、JFileChooser)
- C#(Winform)的SaveFileDialog(文件保存对话框)控件使用
- 使用 OPENFILENAME 以及 GetOpenFileName、GetSaveFileName 实现打开,保存对话框
- 如何使用JFileChooser 的showSaveDialog()方法--实现保存文件功能?(完整)
- C# 文件写入(StreamWriter),保存文件对话框(SaveFileDialog)
- java JFileChooser与 文件过滤器FileFilter
- Winform控件:保存文件对话框(SaveFileDialog)
- 保存文件对话框SaveFileDialog (另存为对话框)
- Java文件选择对话框(文件选择器JFileChooser)的使用:以一个文件加密器为例
- (转帖)使用OpenFileDialog对话框打开文本文件(写此代码的人应该是有一定功力的程序员,因为代码写的很规范,很容易阅读,很好理解,很好调试)
- 【转】C# 取要保存文件的对话框 SaveFileDialog
- Java中的文件对话窗(FileDialog,FilenameFilter,JFileChooser,FileFilter)
- Silverlight3 :使用SaveFileDialog保存到本地文件
- 快速浏览Silverlight3 Beta:使用SaveFileDialog保存到本地文件
- javaday48_IO流_File类的使用,File过滤器,遍历文件目录
- 译文:Silverlight 3.0 新功能之六 : 保存文件对话框(Save File Dialog Box)
- 保存 的对话框使用 saveFileDialog
- Silverlight使用SaveFileDialog保存到本地文件
- Java源码——使用JFileChooser获取文件及目录信息(Obtain file and directory information)