java实现打开文件和保存文件功能

本文提供了一个简单的Java程序示例,展示了如何使用Swing组件和JFileChooser实现文件的打开和保存功能。通过实例代码,读者可以了解到如何读取文本文件内容并显示在界面上,以及如何将文本内容保存到指定路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人是新手,在学习java如何打开文件和保存文件,功能很简单,实现起来也不麻烦。

附源代码:

public class FileOpenAndSave extends JFrame{
private static final long serialVersionUID = 4029562126308556571L;
private JPanel panel1, panel2;
private TextArea ta;
private JButton open, save;
private JLabel label;
public FileOpenAndSave() {
setSize(400, 300);
setTitle("FileOpenDemo");
setLocation(400, 400);
panel1 = new JPanel(new BorderLayout());
panel1.setPreferredSize(new Dimension(280, 280));
ta = new TextArea();
panel1.add(ta, BorderLayout.CENTER);
open = new JButton("Open File");// 打开文件按钮
save = new JButton("Save File");// 保存文件按钮
// 为打开文件按钮注册监听器
open.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser("请选择文件");
FileNameExtensionFilter filter = new FileNameExtensionFilter("文本文件(*.txt)", "txt");
chooser.setFileFilter(filter);
int res = chooser.showOpenDialog(null);
if(res == JFileChooser.APPROVE_OPTION){
File file = chooser.getSelectedFile();
String path = file.getAbsolutePath();
try {
// 注意编码问题
InputStreamReader reader = new InputStreamReader(new FileInputStream(path), "utf-8");
char[] buf = new char[1024]; 
int len = 0;
CharBuffer cb = CharBuffer.allocate((int) file.length());
while((len = reader.read(buf)) > -1){
cb.put(buf, 0, len);
}
reader.close();
String str = new String(cb.array());
// 此段代码功能是将所读文件复制到相同路径下
/*int sep = path.lastIndexOf("\\");
path = path.substring(0, sep + 1) + "copy.txt";
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(path));
writer.write(cb.array());
writer.close();*/
ta.setEditable(false);
ta.setText(str);
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
});
// 为保存文件按钮注册监听器
save.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String path;
String content = ta.getText();
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("文本文件(*.txt)", "txt");
chooser.setFileFilter(filter);
int res =chooser.showSaveDialog(null);
if(res == JFileChooser.APPROVE_OPTION){
path = chooser.getSelectedFile().getAbsolutePath() + ".txt";// 获得保存路径
try {
// 注意编码问题
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(path), "gbk");
writer.write(content);
writer.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
});
label = new JLabel("hhshhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh");
label.setVisible(false);
panel2 = new JPanel(new FlowLayout());
panel2.add(label);
panel2.add(open);
panel2.add(save);
add(panel1, BorderLayout.CENTER);
add(panel2, BorderLayout.SOUTH);
setResizable(false);
enableInputMethods(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new FileOpenAndSave();
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值