Java JFileChooser文件选择器 打开保存文件参考代码

参考代码(一) 


import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.EmptyBorder;
import javax.swing.filechooser.FileNameExtensionFilter;
import com.sun.java.swing.plaf.windows.WindowsLookAndFeel;

 /*
 *  JFileChooser 是 Java Swing 框架中的文件选择器,
 * 在应用程序中经常会遇到打开文件和保存文件等操作, 文件选择器 JFileChooser 是专门应对这种情况而出现的
 */

public class TestSave extends JFrame {
		
	private JPanel contentPane;

	/**
	 * Launch the application.
	 */
	
	public static void main(String[] args) {
		
		EventQueue.invokeLater(new Runnable() {			
			public void run() {				
				try {					
					TestSave frame = new TestSave();					
					frame.setVisible(true);				
				} catch (Exception e) {				
					e.printStackTrace();					
				}				
			}			
		});	
	}
	
	
	/**
	 * Create the frame.
	 */
	
	@SuppressWarnings("restriction")
	public TestSave() {
		
		
		try {
			
			UIManager.setLookAndFeel(new WindowsLookAndFeel());
			
		} catch (UnsupportedLookAndFeelException e) {
			
			e.printStackTrace();
			
		}
		
		
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		setBounds(100, 100, 450, 300);
		
		contentPane = new JPanel();
		
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		
		contentPane.setLayout(new BorderLayout(0, 0));
		
		setContentPane(contentPane);

		JButton btnSave = new JButton("Save");
		
		btnSave.addMouseListener(new MouseAdapter() {		
			@Override
			public void mouseClicked(MouseEvent e) {				
               //创建一个JFileChooser对象				
				
				JFileChooser chooser=new JFileChooser();
				FileNameExtensionFilter filter = new FileNameExtensionFilter(
						 "EXCEL文件(*xls)", "xls");
				chooser.setFileFilter(filter);
				chooser.setFileFilter(filter);
				String defaultFileName="侬好呀"+" .xls" ;
				chooser.setSelectedFile(new File(defaultFileName)); //设置默认文件名
				
				/**

				 * 弹出一个保存文件的对话框

				 * 需要指定一个父级窗体,或指定为 null

				 * 返回值是 int 类型,创建以接收返回值

				 */
				
				int value=chooser.showSaveDialog(TestSave.this);
                 System.out.println(value);
				/**
				 * 如果返回 APPROVE_OPTION,也可以使用对象调用,即 chooser.APPROVE_OPTION			
				 * 说明有文件被成功返回,即成功保存文件
				 * 这里实际上是将一个不存在的文件包装成了一个假设存在的文件,然后将之返回
				 * 但该文件并没有真实的被创建,仅仅是创建了一个文件对象,并可设定路径
				 * 需要使用 createNewFile() 创建文件
				 */
				
				if (value==JFileChooser.APPROVE_OPTION) {									
                  //打印返回文件的绝对路径					
                //System.out.println(chooser.getSelectedFile().getAbsolutePath());									
					try {											
						File newFile=chooser.getSelectedFile();																		
						if (!newFile.exists()) {							
							newFile.createNewFile();							
							System.out.println(newFile.getAbsolutePath());							
						}						
					} catch (IOException e1) {
						e1.printStackTrace();
					}
				}
			}
		});
		
		
		
		
		btnSave.setFocusable(false);
		
		contentPane.add(btnSave, BorderLayout.NORTH);
		
	}
	
}

运行结果:

参考代码(二)

import java.awt.Component;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.filechooser.FileNameExtensionFilter;

public class Main extends JFrame{

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Main m = new Main();
		//ButtonListener l = new ButtonListener(m);
		m.InitUI();
		String file_Name = "C:\\Users\\25280\\Desktop\\Test.txt";
		m.OpenFile(file_Name);
		
		
	}

	public void InitUI()
	{
		this.setTitle("文件读写");
		this.setSize(700, 600);
		this.setDefaultCloseOperation(3);
		this.setResizable(false);
		this.setLocationRelativeTo(null);
		this.setLayout(null);//关闭流式布局
		
		JButton button1 = new JButton("打开文件");
		button1.setBounds(200,500, 100, 50);
		button1.setContentAreaFilled(false);  //消除按钮背景颜色
		button1.setOpaque(false); //除去边框
		button1.setFocusPainted(false);//出去突起
		this.add(button1);
		
		JButton button2 = new JButton("保存文件");
		button2.setBounds(400,500, 100, 50);
		button2.setContentAreaFilled(false);  //消除按钮背景颜色
		button2.setOpaque(false); //除去边框
		button2.setFocusPainted(false);//出去突起
		this.add(button2);
		
		JTextArea messArea = new JTextArea();
		//messArea.setSize(300, 200);
		messArea.setBounds(50, 50, 600, 400);
		this.add(messArea);
		
		ButtonListener BL = new ButtonListener(this,messArea);
		button1.addActionListener(BL);
		button2.addActionListener(BL);
		this.setVisible(true);//设置窗体可见
	}
	
	public void OpenFile(String file_Name)
	{
//		File file = new File(file_Name);
//        Reader reader = null;
//        try {
//            System.out.println("以字符为单位读取文件内容,一次读一个字节:");
//            // 一次读一个字符
//            reader = new InputStreamReader(new FileInputStream(file));
//            int tempchar;
//            while ((tempchar = reader.read()) != -1) {
//                // 对于windows下,\r\n这两个字符在一起时,表示一个换行。
//                // 但如果这两个字符分开显示时,会换两次行。
//                // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。
//                if (((char) tempchar) != '\r') {
//                    System.out.print((char) tempchar);
//                    
//                }
//            }
//            reader.close();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
		   File file = new File(file_Name);
	        InputStream in = null;
	        try {
	            System.out.println("以字节为单位读取文件内容,一次读一个字节:");
	            // 一次读一个字节
	            in = new FileInputStream(file);
	            int tempbyte;
	            System.out.println(in.available());
	            System.out.println(tempbyte = in.read());
	            while ((tempbyte = in.read()) != -1) {
	            	
	                System.out.print(tempbyte);
	            }
	            in.close();
	        } catch (IOException e) {
	            e.printStackTrace();
	            return;
	        }
	}
	
	public void showFileOpenDialog(Component parent, JTextArea msgTextArea)
	{
		
		JFileChooser fc = new JFileChooser();
		fc.setCurrentDirectory(new File("."));//设置默认显示为当前文件夹
		fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);//设置选择模式(只选文件、只选文件夹、文件和文件均可选)
		fc.setMultiSelectionEnabled(true);//是否允许多选
		fc.addChoosableFileFilter(new FileNameExtensionFilter("zip(*.zip, *.rar)", "zip", "rar"));//文件过滤器
		fc.setFileFilter(new FileNameExtensionFilter("image(*.jpg, *.png, *.gif)", "jpg", "png", "gif"));
		int result = fc.showOpenDialog(parent);
		if(result == JFileChooser.APPROVE_OPTION)
		{
			File file = fc.getSelectedFile();//获取打开的文件
			msgTextArea.append("打开文件:"+file.getAbsolutePath()+"\n\n");
			 Reader reader = null;
	        try {
	            System.out.println("以字符为单位读取文件内容,一次读一个字节:");
	            // 一次读一个字符
	            reader = new InputStreamReader(new FileInputStream(file));
	            int tempchar;
	            while ((tempchar = reader.read()) != -1) {
	                // 对于windows下,\r\n这两个字符在一起时,表示一个换行。
	                // 但如果这两个字符分开显示时,会换两次行。
	                // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。
	                if (((char) tempchar) != '\r') {
	                    System.out.print((char) tempchar);
	                 //   String str = ""+tempchar;
	                    msgTextArea.append((tempchar)+"");
	                }
	            }
	            reader.close();
	        } catch (Exception e) {
	            e.printStackTrace();
	        }
		}
	}
	public void showFileSaveDialog(Component parent, JTextArea msgTextArea) {
        // 创建一个默认的文件选取器
        JFileChooser fileChooser = new JFileChooser();

        // 设置打开文件选择框后默认输入的文件名
        fileChooser.setSelectedFile(new File("测试文件.zip"));

        // 打开文件选择框(线程将被阻塞, 直到选择框被关闭)
        int result = fileChooser.showSaveDialog(parent);

        if (result == JFileChooser.APPROVE_OPTION) {
            // 如果点击了"保存", 则获取选择的保存路径
            File file = fileChooser.getSelectedFile();
            
            msgTextArea.append("保存到文件: " + file.getAbsolutePath() + "\n\n");
        }
    }
}
//监听器类:
package FileRead.com.Write;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFileChooser;
import javax.swing.JTextArea;

public class ButtonListener implements ActionListener{

	private Main m ;
	private JTextArea msgTextArea;
	
	
	public ButtonListener(Main m, JTextArea msgTextArea) {
		super();
		this.m = m;
		this.msgTextArea = msgTextArea;
	}


	public void actionPerformed(ActionEvent e) {
		
		if(e.getActionCommand().equals("打开文件"))
		{
			m.showFileOpenDialog(m, msgTextArea);
		}
		else if(e.getActionCommand().equals("保存文件"))
		{
			m.showFileSaveDialog(m, msgTextArea);
		}
	}

}

运行效果如下:

     点击打开按钮:

点击保存按钮:

猜你喜欢

转载自blog.csdn.net/weixin_41792162/article/details/89599299
今日推荐