不知道如何让打开的文件采用unicode的编码方式编码,求解答

F10huihui11 2012-06-24 09:46:54
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FileDialog;
import java.awt.GridLayout;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.MenuShortcut;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.text.JTextComponent;

public class MyNotepad
{
static JFrame frame;
static JScrollPane textScroll = null;
static JTextArea textArea = null;
public static final int FRAME_WIDTH = 300;
public static final int FRAME_HEIGHT = 300;

public static final void init()
{
frame = new JFrame("记事本");
// ImageIcon image = new ImageIcon("src/myPicture.jpg");
// frame.setIconImage(image.getImage());
// 1、菜单条
MenuBar menuBar = new MenuBar();
frame.setMenuBar(menuBar);

// 2、创建菜单
Menu fileMenu = new Menu("文件(F)");
Menu editMenu = new Menu("编辑(E)");
Menu formatMenu = new Menu("格式(O)");
menuBar.add(fileMenu);
menuBar.add(editMenu);
menuBar.add(formatMenu);

// 3、文件子菜单项
MenuItem openFile = new MenuItem("打开文件", new MenuShortcut(0x4F, true));
MenuItem newFile = new MenuItem("新建", new MenuShortcut(0x4E, true));
MenuItem save = new MenuItem("保存", new MenuShortcut(0x53, false));
MenuItem saveAs = new MenuItem("另存为", new MenuShortcut(0x53, true));
MenuItem close = new MenuItem("关闭", new MenuShortcut(0x57, false));
MenuItem exit = new MenuItem("退出");
fileMenu.add(newFile);
fileMenu.add(openFile);
fileMenu.insertSeparator(2);
fileMenu.add(close);
fileMenu.insertSeparator(4);
fileMenu.add(save);
fileMenu.add(saveAs);
fileMenu.add(exit);

// 创建文本域
textArea = new JTextArea(300,300);
// 创建滚动条
textScroll = new JScrollPane(textArea);
frame.add(textScroll, BorderLayout.CENTER);
// 创建标签

final JTextField textfield = new JTextField(3);
final JTextField textfield1 = new JTextField(3);
final JTextField textfield2 = new JTextField(3);
final JTextField textfield3 = new JTextField(3);
final JTextField textfield4 = new JTextField(3);
final JTextField textfield5 = new JTextField(3);
final JTextField textfield6 = new JTextField(3);
final JTextField textfield7 = new JTextField(3);


JPanel northpanel = new JPanel();
JPanel southpanel = new JPanel();
northpanel. setLayout(new GridLayout(4,4));



northpanel.add(new JLabel("User name:"));
northpanel.add(textfield);
northpanel.add(new JLabel("User name1:"));
northpanel.add(textfield1);
northpanel.add(new JLabel("User name2:"));
northpanel.add(textfield2);
northpanel.add(new JLabel("User name3:"));
northpanel.add(textfield3);
northpanel.add(new JLabel("User name4:"));
northpanel.add(textfield4);
northpanel.add(new JLabel("User name5:"));
northpanel.add(textfield5);
northpanel.add(new JLabel("User name6:"));
northpanel.add(textfield6);
northpanel.add(new JLabel("User name7:"));
northpanel.add(textfield7);



frame.add(northpanel,BorderLayout.NORTH);


JButton inserButton = new JButton("insert");


southpanel.add(inserButton);
inserButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
textArea.append("<token> "+textfield.getText()+"</token>"+"\n");
}
});

frame.add(southpanel,BorderLayout.SOUTH);

// 1、打开文件处理事件
openFile.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
FileDialog openFileDialog = new FileDialog(frame, "打开",
FileDialog.LOAD);
openFileDialog.setVisible(true);
textArea.setVisible(true);

// 得到文件名
String openedFileName = openFileDialog.getFile();
String openedFileDirectory = openFileDialog.getDirectory();
String openedFilePath = openedFileDirectory + openedFileName;
if (openedFileName.equals("") || openedFileName == null)
{
frame.setTitle("无标题 - 记事本");
}
else
{
frame.setTitle(openedFileName + " - 记事本");
}
try
{
writerBuffertoJTextArea(openedFilePath, textArea);
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
});


// 2、 新建事件处理
newFile.addActionListener(new ActionListener()
{

@Override
public void actionPerformed(ActionEvent e)
{
textArea.setVisible(true);
frame.setTitle("无标题 - 记事本");
textArea.setText("");
}
});

// 3、 关闭文件事件
close.addActionListener(new ActionListener()
{

public void actionPerformed(ActionEvent e)
{
textArea.setVisible(false);
// textArea = null;
}
});

// 4、保存文件事件
save.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
FileDialog saveFileDialog = new FileDialog(frame, "保存",
FileDialog.SAVE);
saveFileDialog.setVisible(true);
// 得到文件名
String saveFileName = saveFileDialog.getFile();
String saveFileDirectory = saveFileDialog.getDirectory();
String saveFilePath = saveFileDirectory + saveFileName;
if (saveFileName.equals("") || saveFileName == null)
{
frame.setTitle("无标题 - 记事本");
}
else
{
frame.setTitle(saveFileName + " - 记事本");
}

try
{
textBufferToFile(textArea, saveFilePath);
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
});

// 5、另存为事件处理
saveAs.addActionListener(new ActionListener()
{

@Override
public void actionPerformed(ActionEvent e)
{

FileDialog saveAsFileDialog = new FileDialog(frame, "另存为",
FileDialog.SAVE);
saveAsFileDialog.setVisible(true);
// 得到文件名
String saveAsFileName = saveAsFileDialog.getFile();
String saveAsFileDirectory = saveAsFileDialog.getDirectory();
String svaeAsFilePath = saveAsFileDirectory + saveAsFileName;
if (saveAsFileName.equals("") || saveAsFileName == null)
{
frame.setTitle("无标题 - 记事本");
}
else
{
frame.setTitle(saveAsFileName + " - 记事本");
}

try
{
textBufferToFile(textArea, svaeAsFilePath);
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
});

// 6、退出事件处理
exit.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});

// 3.2、编辑子菜单项
MenuItem copy = new MenuItem("复制", new MenuShortcut(0x43, false));
MenuItem cut = new MenuItem("剪切", new MenuShortcut(0x58, false));
MenuItem paste = new MenuItem("粘贴", new MenuShortcut(0x56, false));
MenuItem edition = new MenuItem("版本");
editMenu.add(copy);
editMenu.add(cut);
editMenu.add(paste);
editMenu.add(edition);
editMenu.insertSeparator(3);

// 3.3 格式字菜单项
MenuItem autoLine = new MenuItem("自动换行");
MenuItem font = new MenuItem("字体");
formatMenu.add(autoLine);
formatMenu.add(font);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setLocation(100, 20);
frame.setVisible(true);
}




public static void main(String[] args)
{

init();
}

// 把一个文件里面的内容写入文本框
public static final void writerBuffertoJTextArea(String fileFrom,
JTextComponent text) throws IOException
{
InputStream inBuffer = null;
OutputStream outBuffer = null;
InputStream in = null;
OutputStream out = null;

try
{

in = new FileInputStream(fileFrom);
inBuffer = new BufferedInputStream(in);
StringBuffer sb = new StringBuffer();
// InputStreamReader input = new InputStreamReader(new FileInputStream(fileFrom),"UTF-8" );


while (true)
{

byte[] b = new byte[1024];
int bytedata = inBuffer.read(b);
sb = sb.append(new String(b));

if (bytedata == -1)
{
break;
}
}
text.setText(sb.toString());


}
finally
{
if (inBuffer != null)
{
inBuffer.close();
}
if (outBuffer != null)
{
outBuffer.close();
}
}
}




// 把文本框里面的内容写入一个文件中
// 写文件
public static final void textBufferToFile(JTextComponent text, String fileTo)
throws IOException
{
FileOutputStream out = null;
OutputStreamWriter outWriter = null;
BufferedWriter bufferedWriter = null;

try
{
out = new FileOutputStream(fileTo, false);
outWriter = new OutputStreamWriter(out);
bufferedWriter = new BufferedWriter(outWriter);
String content = new String(text.getText());
bufferedWriter.write(content);

}
finally
{
if (bufferedWriter != null)
{
bufferedWriter.close();
}
if (outWriter != null)
{
outWriter.close();
}
if (out != null)
{
out.close();
}
}
}

}
[/code]
...全文
283 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
F10huihui11 2012-06-25
  • 打赏
  • 举报
回复
很感谢大家对我的帮助,谢谢你们~
F10huihui11 2012-06-24
  • 打赏
  • 举报
回复
能不能说的详细一点,最好可以有代码,我是刚学习java,程序方面不是太懂
xlhb 2012-06-24
  • 打赏
  • 举报
回复
BufferedReader bf = new BufferedReader(input);
String buf;
while ((buf=br.readLine()) != null) {
sb.appned(buf); //按行读入保存
sb.append(System.getProperty("line.separator")); //系统换行符
}
bf.close();
text.setText(sb.toString());

五哥 2012-06-24
  • 打赏
  • 举报
回复
读入一行 ,然后转码
F10huihui11 2012-06-24
  • 打赏
  • 举报
回复
太谢谢你了,现在我的程序可以读取xml文件了,真心感谢~
F10huihui11 2012-06-24
  • 打赏
  • 举报
回复
我刚刚试了你给的程序,现在已经可以读写xml的文件了,真的太谢谢你了~
qybao 2012-06-24
  • 打赏
  • 举报
回复
怎么改不好的?
public static final void writerBuffertoJTextArea(String fileFrom,
JTextComponent text) throws IOException
{
StringBiulder sb = new StringBuilder();
InputStreamReader input = new InputStreamReader(new FileInputStream(fileFrom),"UTF-8" );
BufferedReader br = new BufferedReader(input);
String buf;
while ((buf=br.readLine()) != null)
{
sb.append(buf);
sb.append(System.getProperty("line.separator"));
}
br.close();
text.setText(sb.toString());
}
F10huihui11 2012-06-24
  • 打赏
  • 举报
回复
InputStreamReader input = new InputStreamReader(new FileInputStream(fileFrom),"UTF-8" ); 如何修改?我改了很多次都不行,请求指点
qybao 2012-06-24
  • 打赏
  • 举报
回复
// InputStreamReader input = new InputStreamReader(new FileInputStream(fileFrom),"UTF-8" );
这样就是带编码的方式打开文件了

把上面注释打开,然后修改

BufferedReader bf = new BufferedReader(input);
String buf;
while ((buf=br.readLine()) != null) {
sb.appned(buf); //按行读入保存
sb.append(System.getProperty("line.separator")); //系统换行符
}
bf.close();
text.setText(sb.toString());
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 全国计算机等级考试二级教程《Python语言程序设计》(2018年版)被视为针对Python入门者和备考人员的核心学习材料。该资料汇总了教材内的所有编程练习案,这些案在Python 3.5.3环境中经过实际执行测试,从而保障了代码的准确性和应用价值。备考人员借助这些案,能够评估自身的学习进度,并深入理解和熟练掌握Python编程的基础原理与方法。 1. Python基础理论:Python作为一门高级编程语言,因其简明扼要的语法结构和卓越的功能表现而备受推崇。基础内容涵盖了变量、数据种类(例如整型、浮点型、字符串、布尔型、列表、元组、字典、集合)、逻辑控制(比如条件判断if-else,循环控制for、while)、函数的声明及使用、模块的引入等。 2. Python高级应用:Python的进阶内容涉及异常管理(try-except-finally结构),类与实例(面向对象编程的基础,包含类的构造、对象的生成、属性与方法的运用、继承机制、多态表现),装饰器(用于调整函数或类的功能特性),上下文管理器(借助with语句实现资源管理)等。 3. 数据文件处理:Python配备了全面的文件操作功能,涉及文件的开启、数据读写、关闭操作,以及多种操作模式(例如r模式用于读取,w模式用于写入,a模式用于追加内容等)。此外,还包括文本文件与二进制文件的转换处理,以及文件的位置调整、复制和删除等操作。 4. 标准库的运用:Python的标准库资源极为丰富,比如os模块提供操作系统接口,sys模块用于获取系统参数,random模块可用于生成随机数值,datetime模块负责处...

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧