请大家帮帮忙啊....
   我想打开一个文本文件,如记事本那样:点击(文件)-->打开-->然后选择一个文本文件(*.txt),
然后该文件的内容能显示在窗口中。小弟不才,可能描述上有点不清楚,不过大概就是这个样子吧。呵呵
给出关键部分就行....!先在此谢谢大家啦

解决方案 »

  1.   

    不知道楼主是想实现什么效果
    是像记事本那样GUI形式还是
    只是获取某一个文本的数据但是都是使用文件流来实现
      

  2.   


    package ql.wims;import quanwen.*;import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.util.*;
    import javax.swing.*;
    import java.sql.*;
    import sun.io.*;
    import java.net.*;
    import java.beans.*;
    import javax.swing.table.*;public class SBST201 extends JPanel{  JScrollPane spPane=new JScrollPane();
      public JTextArea taContents=new JTextArea();
      JButton btnOK=new JButton();  SBSBusObject bo=new SBSBusObject();
      public LocalLang ll;
      JFileChooser file=new JFileChooser();
      TextPreviewer txtPreviewer=new TextPreviewer();
      TxtPreviewPanel txtPreviewPanel=new TxtPreviewPanel();
      String userID="";  /**
       * 该面板上的某些组件必须根据用户权限设定,因此,必须在构造函数中
       * 引入用户的ID号
       */
      public SBST201(String userID){
        doInit();
      }
      private void doInit(){
        btnOK.setText(ll.getValue("T201.gui.ok"));    btnOK.addMouseListener(new java.awt.event.MouseAdapter() {
          public void mouseClicked(MouseEvent e) {
             btnOK_mouseClicked();
          }
        });    setLayout(new BorderLayout());
        add(pnl1,BorderLayout.NORTH);
        add(spPane,BorderLayout.CENTER);
       }
       /**
        * 从文本文件中获取需要的内容
        */
       public void btnOK_mouseClicked(){
        
        file.setAccessory(txtPreviewPanel);
        file.setFileFilter(new SimpleFileFilter("txt",
                ll.getValue("T201.dialog.fileType")));
        file.setCurrentDirectory(new File(ll.getValue("T201.dialog.fileRoot")));
        file.addPropertyChangeListener(new PropertyChangeListener()
        {
          public void propertyChange(PropertyChangeEvent e)
          {
             if (e.getPropertyName().equals(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY))
              {
                txtPreviewer.configure((File)e.getNewValue());
              }
          }
        });
        int state=file.showOpenDialog(null);
        File f=file.getSelectedFile();
        if((f!=null)&&(state==file.APPROVE_OPTION))
        {
          try
          {
             tfContents.setText(f.getPath());
          }
          catch(Exception ex){}
        }
        else
        {
          tfContents.setText("c:\\1.txt");
        }
        try
        {
           taContents.setText("");       BufferedInputStream bin1=new BufferedInputStream(new FileInputStream(f));
           BufferedReader br=new BufferedReader(new InputStreamReader(bin1));
           String s="";
           String firstLine="";
           int i=0;
           while((s=br.readLine())!=null){
             if (i==0){
               firstLine=s;
             }else{
               taContents.append(s+""+(char)0x0a+(char)0x0d);
             }
             i++;
           }       taContents.setCaretPosition(0);
           tfTitle.setText(firstLine);
        }
        catch(Exception ex)
        {
           ex.printStackTrace();
        }
       }   //---------------------------------------------------
       //与父调用者之间的接口
       //---------------------------------------------------
       public static void main(String[] args){
         SBST201 panel=new SBST201("00000000000000000000");
         JDialog window=new JDialog((Frame)null,"测试窗口",true);
         window.getContentPane().add(panel,BorderLayout.CENTER);
         window.addWindowListener(new MyWindow());
         window.setSize(600,450);
         window.show();
       }
      //文本文件可访问组件
      class TxtPreviewPanel extends JPanel
      {
         public TxtPreviewPanel()
         {
           //获取语言文件
           INIOperate ini=new INIOperate(new File("c:/upload/ini/"+"SBS.ini"),20,"   ;");
           String language="c:/upload/ini/"+"Lang_"+ini.getItem("语言/language")+".txt";
           LocalLang ll=new LocalLang(language);
           JLabel label=new JLabel(ll.getValue("T201.dialog.txtPreview"),SwingConstants.CENTER);
           setPreferredSize(new Dimension(300,0));
           setBorder(BorderFactory.createEtchedBorder());
           setLayout(new BorderLayout());
           label.setBorder(BorderFactory.createEtchedBorder());
           //add(label,BorderLayout.NORTH);
           add(txtPreviewer,BorderLayout.CENTER);
         }
      }
      //文本文件预览类
      class TextPreviewer extends JComponent
      {
        private JTextArea textArea=new JTextArea();
        private JScrollPane scrollPane=new JScrollPane(textArea);
        public TextPreviewer()
        {      textArea.setBackground(new Color(235,255,235));
          textArea.setEditable(false);
          textArea.setLineWrap(true);
          setBorder(BorderFactory.createEtchedBorder());
          setLayout(new BorderLayout());
          add(scrollPane,BorderLayout.CENTER);
        }
        public void configure(File file)
        {
          textArea.setText(contentsOfFile(file));
          textArea.setCaretPosition(0);
        }
        public String contentsOfFile(File file){
          String s="";
          byte[] buff=new byte[50000];
          byte[] b=new byte[1];
          //取前四行
          try
          {
            BufferedInputStream bin=
                new BufferedInputStream(new FileInputStream(file));
            int nch;
            int hang=0;
            int totalBytes=0;
            while((hang<3)&&(nch=bin.read(b))!=-1)
            {
               buff[totalBytes++]=b[0];
               if (b[0]==0x0d)
                {
                   s=s+new String(buff,0,totalBytes);
                   hang++;
                   totalBytes=0;
                }
            }
            bin.close();
          }
          catch(Exception ex)
          {
             s="Could not load file";
          }
          return s;
        }
      }
    }   
      

  3.   

    这个很简单的说,用FileChooser作为打开文件对话框,然后用文件IO流去读取就行了
      

  4.   

    br = new BufferedReader(fr = new FileReader(file1));String s1 = "";
    while ((s = br.readLine()) != null) {
    s += System.getProperty("line.separator");
    s1 += s;

    {
           
      

  5.   

       首先用File  file=new File(filename);
    这个时候可以根据自己的需要再继续封装该file
    比如该文件是读文件,就可以再封装一次FileReader
    具体是:FileReader  freader=new FileReader(file);
    有些涉及速度匹配,需要缓冲的情况,那么可以再在freader
    上封装BufferReader,
    具体是:BufferReader  in=new BufferReader(freader);
    各个封装后数据的读写调用相应的方法就ok。
      另外需要说明,如果是写一个新的文件,我这里有点忘了,你可以
    试一下到底文件在哪个时候新建。file有方法可以创建,好像在
    封装file时也会自动创建。
      拙见!!!
      

  6.   

    用FileChooser作为打开文件对话框,然后用文件IO流去读取就行了