日期:2014-05-20  浏览次数:20832 次

文件读写问题:一个令我困惑的问题
程序代码如下,
问题如下:
1、点击“open”按钮,打开一个文本文件,文本内容显示在txta(文本框)中,但是很奇怪,txta中只显示打开的文本文件内容的倒数第二行,这是为什么???
2、点击“保存”按钮,把txta(文本框)中的几行字符保存文本文件,假设是aa.txt,但是当我打开刚保存的aa.txt文件时,发现只能显示一行,回车换行以字符“■”代替,这是为什么?
以上两个问题该如何解决?望个路高手不吝赐教!!!小弟在此先感谢了!!!
祝各位通道中人:新年愉快!!!

import   java.awt.*;
import   java.awt.event.*;
import   javax.swing.*;
import   javax.swing.event.*;
import   java.io.*;

/**
  *   @author   liyongjie
  *
  */

public   class   JFileDialog   {

/**
  *  
  */
JFrame   frm=null;
JTextArea   txta=null;
JScrollPane   jsp=null;
JPanel   btnp=null;
JButton   openbtn=null,savebtn=null,exitbtn=null;

public   JFileDialog()   {
//   TODO   自动生成构造函数存根
frm=new   JFrame( "文件对话框测试! ");
Container   cp=frm.getContentPane();
frm.setBounds(300,200,500,400);

txta=new   JTextArea(16,10);
txta.setAutoscrolls(true);
jsp=new   JScrollPane(txta);
openbtn=new   JButton( "open ");
savebtn=new   JButton( "save ");
exitbtn=new   JButton( "exit ");

btnp=new   JPanel();
btnp.add(openbtn);
btnp.add(savebtn);
btnp.add(exitbtn);
btnp.setBorder(BorderFactory.createTitledBorder( "open   file "));

cp.add(jsp,BorderLayout.NORTH);
cp.add(btnp);

openbtn.addActionListener(new   BtnLis());
savebtn.addActionListener(new   BtnLis());
exitbtn.addActionListener(new   BtnLis());

frm.setVisible(true);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
class   BtnLis   implements   ActionListener
{
public   void   actionPerformed(ActionEvent   e)
{
if((JButton)e.getSource()==openbtn)//打开文件
{
JFileChooser   fileChooser=new   JFileChooser();
int   result=fileChooser.showOpenDialog(frm);
String   currentFilePath;
String   fileName;
if(result==JFileChooser.APPROVE_OPTION);
{
currentFilePath=fileChooser.getSelectedFile().getPath();//包括文件路径和文件全名
fileName=fileChooser.getSelectedFile().getName();
txta.setText( "you   select   file   name   is: "+fileName+ "\n "+ "the   file   path   is: "+currentFilePath+ "\n ");
try
{
FileReader   fileReader=new   FileReader(currentFilePath);
BufferedReader   buf=new   BufferedReader(fileReader);
String   str;
while((str=buf.readLine())!=null)
{
txta.append(buf.readLine());
}
fileReader.close();
buf.close();
}
catch(IOException   ioe)
{
txta.setText( "文件读取失败 ");
}
}
}
else   if((JButton)e.getSource()==savebtn)//保存文件
{
File   file;
JFileChooser   fileChooser=new   JFileChooser();
String   filePath;
String   fileName;
int   result=fileChooser.showSaveDialog(frm);
if(result==JFileChooser.APPROVE_OPTION)
{
file=fileChooser.getSelectedFile();
filePath=fileChooser.getSelectedFile().getPath();
fileName=file.getName();
try
{
FileWriter   fileWriter=new   FileWriter(filePath,true);
fileWriter.write(txta.getText());