java gui打开文件,java gui中打开和保存文件

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

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值