在XP平台,指定GBK读取,解决乱码问题
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.border.*;
public class Match_File extends JFrame implements ActionListener {
private TextArea Txt;
private FileDialog saveDia, openDia;
private File file;
JButton Open_File, Save_File, Exit;
JLabel JL1, JL2,FileInfo,FilePath;
JTextField JT1;
public Match_File() {
this.setLayout(new FlowLayout(FlowLayout.LEFT));
Txt = new TextArea("请点击打开文件,导入数据", 10, 42);
openDia = new FileDialog(this, "打开", FileDialog.LOAD);
saveDia = new FileDialog(this, "保存", FileDialog.SAVE);
add(showBorder1(new TitledBorder("文件类型")));
this.add(Txt);
add(showBorder2());
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
this.setLocation(width / 2 - 300, height / 2 - 150);
this.setVisible(true);
this.setSize(335, 310);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("词条过滤器");
}
public JPanel showBorder2() {
JPanel JP = new JPanel();
JP.setLayout(new FlowLayout());
FileInfo = new JLabel(" 文件路径: ");
FilePath = new JLabel(" ");
JT1 = new JTextField(35);
JT1.setEditable(false);
JP.add(FileInfo);
JP.add(JT1);
return JP;
}
public JPanel showBorder1(Border B) {
JPanel JP = new JPanel();
JP.setLayout(new FlowLayout());
Open_File = new JButton(" 打开文件 ");
Open_File.addActionListener(this);
JL1 = new JLabel(" ");
Save_File = new JButton(" 保存文件 ");
Save_File.addActionListener(this);
JL2 = new JLabel(" ");
Exit = new JButton("退出");
Exit.addActionListener(this);
JP.add(Open_File);
JP.add(JL1);
JP.add(Save_File);
JP.add(JL2);
JP.add(Exit);
JP.setBorder(B);
return JP;
}
public static void main(String[] args) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager
.getInstalledLookAndFeels()) {
if ("Windows Classic".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Match_File().setVisible(true);
}
});
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == this.Open_File) {
openDia.setVisible(true);
String dirPath = openDia.getDirectory();
String fileName = openDia.getFile();
System.out.println(dirPath + "...." + fileName);
if (dirPath == null || fileName == null)
return;
Txt.setText("");
File file = new File(dirPath, fileName);
String Path = dirPath+fileName;
FileInfo.setText("文件打开路径:");
//FilePath.setText(Path);
JT1.setText(Path);
try {
BufferedReader bufr = new BufferedReader(new InputStreamReader(
new FileInputStream(file), "gbk"));
String line = null;
while ((line = bufr.readLine()) != null) {
String[] New_Tmp = line.split("=");
if (New_Tmp.length > 1) {
Txt.append(New_Tmp[1] + "\r\n");
} else {
Txt.append(line + "\r\n");
}
}
bufr.close();
} catch (IOException ex) {
throw new RuntimeException("读取失败");
}
} else if (e.getSource() == this.Save_File) {
if (file == null) {
saveDia.setVisible(true);
String dirPath = saveDia.getDirectory();
String fileName = saveDia.getFile();
if (dirPath == null || fileName == null)
{
return;
}
file = new File(dirPath, fileName);
String Path = dirPath+fileName;
FileInfo.setText("文件保存路径:");
//FilePath.setText(Path);
JT1.setText(Path);
}
try {
OutputStreamWriter write = new OutputStreamWriter(
new FileOutputStream(file), "gbk");
BufferedWriter bufw = new BufferedWriter(write);
String text = Txt.getText();
bufw.write(text);
bufw.close();
JOptionPane.showMessageDialog(null, "文件已保存");
} catch (Exception ex) {
ex.printStackTrace();
}
} else {
JOptionPane.showMessageDialog(null, "程序现在退出");
System.exit(0);
}
}
}
- 大小: 91.1 KB
分享到:
相关推荐
在本篇文章中,我们将详细介绍如何使用Java编程语言通过FTP(文件传输协议)实现文件的上传与下载功能,并能够将文件指定上传或下载到特定的服务器目录下。此方法已经过测试验证,能够满足基本的需求,并且代码易于...
1. **创建文件**:首先,创建一个`java.io.FileOutputStream`对象,指定要保存的文件路径和模式(如追加或覆盖)。 ```java FileOutputStream fos = new FileOutputStream(filePath, append); ``` 2. **创建字节...
Java 8引入了新的Files类,我们可以利用其readString()方法读取文件,同时指定编码。但Properties类没有提供直接的方法来保存时指定编码,所以仍需要自定义OutputStreamWriter。 ```java Map, String> props = new ...
这样,在写入文件时,Java 就会使用 UTF-8 编码来保存文件内容,从而避免中文乱码。 编码转换 在读取和写入文件时,编码转换是一个关键步骤。如果不进行正确的编码转换,就可能会出现中文乱码问题。Java 提供了...
Java实现文件下载,尤其是处理Excel文件,涉及到多个层面的技术细节,包括但不限于响应头的设置、文件读写、错误处理,以及前端与后端的协调。通过深入理解这些技术要点,开发者可以构建出既高效又安全的文件下载...
- 最后调用`close()`保存文件。 示例代码如下: ```java try (DbfWriter writer = new DbfWriter(new File("path_to_new_dbf_file.dbf"))) { // 添加字段 writer.addField(new DbfField("NAME", DbfFieldType...
本主题将深入探讨“Java编辑器保存文件”的过程,结合提供的标签“源码”和“工具”,我们将讨论如何在Java应用中实现文件保存功能,并涉及到与之相关的类和方法。 首先,`TestToogleSectionDialog.java`和`...
Java 指定编码生成静态网页技术涉及到一系列的编程概念和方法,主要目的是从网络上获取HTML页面内容,并将其保存到本地文件系统中,形成一个静态网页。在Java中,这个过程通常涉及到网络请求、输入输出流处理以及...
在Java编程环境中,读取INI配置文件是一项常见的任务,这些文件通常用于存储应用程序的设置或配置参数。由于INI文件格式简单且易于理解,因此在许多系统中被广泛使用。本篇我们将深入探讨如何使用Java有效地读取包含...
通过以上步骤,你可以使用Java的`Properties`类高效地读取、修改和保存配置文件,为你的应用程序提供灵活的配置管理。在实际项目中,你可能会将其封装到一个单独的类,如示例代码中的`PropertiesReader`,以提供更...
【JAVA对象序列化保存为XML文件的工具类】 在Java编程中,对象序列化是一种将对象的状态转换为字节流的过程,以便可以存储或在网络上传输。而在反序列化时,这个字节流又可以恢复为原来的对象。Java提供了一个方便...
如果属性文件包含非ASCII字符,我们需要指定正确的编码,如UTF-8。 ```java Properties props = new Properties(); FileInputStream fis = new FileInputStream("config.properties"); props.load(new ...
总结起来,Java的`InputStream`和`FileReader`分别用于处理二进制数据和文本数据的读取,而`InputStreamReader`允许你在读取文件时指定字符编码。在用户界面中选择文件时,尽管`FileDialog`在早期版本中被使用,但...
2. 使用`Files`类:Java 7引入了`java.nio.file.Files`,提供了一种更简洁的读取文件的方式,同时也支持指定编码: ```java String content = new String(Files.readAllBytes(file.toPath()), StandardCharsets....
在Java中,使用带有指定编码(如UTF-8)的InputStreamReader和OutputStreamWriter可以确保数据传输时不发生编码错误。在C++中,也需要确保文件读写时使用的编码与Java端一致。 5. **端口配置**:Socket通信需要指定...
本文将详细介绍如何在Java中读取`properties`配置文件。 首先,我们需要了解`properties`文件的格式。一个标准的`.properties`文件通常包含多个行,每行由一个键和一个值组成,它们之间用等号(`=`)或冒号(`:`)...
在Java编程环境中,生成二维码并将其保存到本地是一项常见的任务,尤其在移动...总的来说,Java生成二维码的过程涉及到编码、图像处理和文件操作等多个环节。理解这些步骤有助于我们在项目中灵活地生成和使用二维码。
本文将深入探讨如何在Java中实现动态修改配置文件,同时解决中文字符编码问题,使得配置文件的读写更加高效和便捷。 首先,我们需要理解Java中的Properties类,它是处理配置文件的标准工具。`java.util.Properties`...
通常,XML文件使用UTF-8编码,因此在读写文件时应明确指定此编码,如`new FileOutputStream(file, false, StandardCharsets.UTF_8)`。 综上所述,从Windows系统导出XML文件至Linux服务器涉及到Java中的路径处理、...
总结,Java通过指定正确的编码(如UTF-8)加载Properties文件,可以处理中文键的问题。同时,利用反射机制可以根据Properties文件中的键动态调用目标对象的方法,实现灵活的配置管理。在实际项目中,确保正确处理...