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()); } } }
Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1