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
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());
}
}
}