博客详情

java gui中打开和保存文件 (原创)

作者: 朝如青丝暮成雪
发布时间:2018-12-12 09:04:07  文章分类:javaGUI   阅读(1327)  评论(0)


FileUtils.java  判断文件的编码格式(GBK、utf-8等)


import java.io.BufferedInputStream;
import java.io.FileInputStream;

public class FileUtils {
	/**
     * 判断文件的编码格式
     * @param fileName  文件名字符串
     * @return 文件编码格式
     * @throws Exception
     */
	 public static String getFileEncoding(String fileName) throws Exception{
	        BufferedInputStream bin = null;
				try { 
				 bin=	new BufferedInputStream( new FileInputStream(fileName));
			      int p = (bin.read() << 8) + bin.read();
			      String  code = null;
			      switch (p) {
							case 0xefbb:
							    code = "UTF-8";
							    break;
							case 0xfffe:
							    code = "Unicode";
							    break;
							case 0xfeff:
							    code = "UTF-16BE";
							    break;
							default:
							    code = "GBK";
			      }
			      return code;
				} finally{
					if(bin!=null){
						bin.close();
					}
				}
	    }
}
JFrameMain 主程序中


1、打开指定文件(支持多个)读取内容到文本域中。

2、读取文本域中内容保存到指定文件中。


private String opendir;//最近打开的目录
	private String savedir;//最近保存的目录


        /**
	 * 文件打开
	 * @param textArea 文本域
	 */
	void openFile(JTextArea textArea ){//打开文件
		 InputStreamReader  reader = null;
		try {
		 JFileChooser wjopen=null;
		 if(opendir!=null&&opendir.trim().length()>0){
			 wjopen=new JFileChooser(opendir);
		 }else{
			 wjopen=new JFileChooser();
		 }
		wjopen.setDialogTitle("文件打开");
		wjopen.addChoosableFileFilter(new FileNameExtensionFilter("文本文件(txt)","txt"));
		wjopen.addChoosableFileFilter(new FileNameExtensionFilter("java文件(java)","java"));
		wjopen.addChoosableFileFilter(new FileNameExtensionFilter("c#文件(cs)","cs"));
		wjopen.addChoosableFileFilter(new FileNameExtensionFilter("c文件(c)","c"));
		wjopen.addChoosableFileFilter(new FileNameExtensionFilter("c++文件(cpp)","cpp"));
		wjopen.addChoosableFileFilter(new FileNameExtensionFilter("php文件(php)","php"));
		wjopen.addChoosableFileFilter(new FileNameExtensionFilter("JavaScript文件(js)","js"));
		wjopen.addChoosableFileFilter(new FileNameExtensionFilter("sql文件(sql)","sql"));
		
		wjopen.setMultiSelectionEnabled(true);
		
		wjopen.setDialogType(JFileChooser.OPEN_DIALOG);
		int value=wjopen.showOpenDialog(null);
		 wjopen.setVisible(true);
		 if(value==JFileChooser.APPROVE_OPTION){//用户点击了打开
			  File[] openfiles= wjopen.getSelectedFiles();//选择的文件
			  if(openfiles!=null){
				  
				  textArea.setText("");
				  this.opendir=openfiles[0].getParent();
				  for(int i=0;i<openfiles.length;i++){
					   String encoding= FileUtils.getFileEncoding(openfiles[i].getAbsolutePath());
						
						  reader=new InputStreamReader(new FileInputStream(openfiles[i]), encoding);
						   char[] buf=new char[1024];
						   int len=0;
						   while((len=reader.read(buf))>0){
							   textArea.append (new String(buf,0,len));
						   }
				   }
			  }
		 }
		} catch (Exception e) {
			e.printStackTrace();
		}
		 finally {//关流操作
            try {
                if (reader != null) {
               	 reader.close();
                }
            }
            catch (Exception e) {
                  System.out.println("InputStreamReader close IOException" + e.getStackTrace());
            }
      }
	}

	/**
	 * 文件保存
	 * @param textArea  文本域
	 */
	void saveFile(JTextArea textArea){//保存到文件
		BufferedWriter writer=null;
		
		try {
			 JFileChooser wjsave=null;
			 if(savedir!=null&&savedir.trim().length()>0){
				 wjsave=new JFileChooser(savedir);
			 }else{
				 wjsave=new JFileChooser();
			 }
			 wjsave.setDialogTitle("保存到文件");
				
				wjsave.addChoosableFileFilter(new FileNameExtensionFilter("文本文件(txt)","txt"));
				wjsave.addChoosableFileFilter(new FileNameExtensionFilter("java文件(java)","java"));
				wjsave.addChoosableFileFilter(new FileNameExtensionFilter("c#文件(cs)","cs"));
				wjsave.addChoosableFileFilter(new FileNameExtensionFilter("c文件(c)","c"));
				wjsave.addChoosableFileFilter(new FileNameExtensionFilter("c++文件(cpp)","cpp"));
				wjsave.addChoosableFileFilter(new FileNameExtensionFilter("php文件(php)","php"));
				wjsave.addChoosableFileFilter(new FileNameExtensionFilter("JavaScript文件(js)","js"));
				wjsave.addChoosableFileFilter(new FileNameExtensionFilter("sql文件(sql)","sql"));
				
			 
			 wjsave.setDialogType(JFileChooser.SAVE_DIALOG);
			int value= wjsave.showSaveDialog(null);
			 wjsave.setVisible(true);
			 if(value==JFileChooser.APPROVE_OPTION){//用户点击了保存
				   File savefile= wjsave.getSelectedFile();// 保存的文件
				   savedir= savefile.getParent();//将文件目录保存到成员变量
				  writer = new BufferedWriter(new FileWriter(savefile));
				  String result= textArea.getText();
				  String[] temp=result.split("[\\r\\n]");
				  for (int i = 0; i < temp.length; i++) {
					  writer.write(temp[i]);
					  writer.write("\r\n");
				  }
			 }
			 
		} catch (Exception e) {
			e.printStackTrace();
		}
		finally {//关流操作
           try {
               if (writer != null) {
               	writer.close();
               }
           }
           catch (Exception e) {
                 System.out.println("BufferedWriter close IOException" + e.getStackTrace());
           }
     }
    }




关键字:  javaGui  文件打开
评论信息
暂无评论
发表评论

亲,您还没有登陆,暂不能评论哦! 去 登陆 | 注册

博主信息
   
数据加载中,请稍候...
文章分类
   
数据加载中,请稍候...
阅读排行
 
数据加载中,请稍候...
评论排行
 
数据加载中,请稍候...

Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1

鄂公网安备 42011102000739号