当前位置:编程学习 > JAVA >>

如何将JfileChooser中选取的txt文件显示在JtextArea中

package try;


//AWT: FileDialog类 + FilenameFilter类 可以实现本功能
//Swing: JFileChooser类 + FileFilter类     可以实现本功能

//
//该类用来测试打开文件和保存文件的对话框  

import java.awt.*;      //为了使用布局管理器  
import java.awt.event.*;//用来处理事件  

import javax.swing.*;   //最新的GUI组件  

import java.io.*;       //读写文件用  

public class try1   
{   

  private JFrame frm;   
  private JButton open;   
  private JButton read;   
  private JPanel p;   
  private File f;   
  private JFileChooser fc;   
  private int flag;   

 public  guji1()   
  {   
    frm=new JFrame("显示text");   
    open=new JButton("打开");   
    read=new JButton("保存");   
    p=new JPanel();   
    fc=new JFileChooser();   


    Container c=frm.getContentPane();   
    c.setLayout(new FlowLayout());   

    c.add(p);   
    p.add(open);   
    p.add(read);  
    
    JTextArea t=new JTextArea(12,40);
    c.add(t);
    t.setText(null);
  //注册按钮事件  
    open.addActionListener(new action());   
    read.addActionListener(new action());   
    Toolkit tk=Toolkit.getDefaultToolkit();
    Dimension d=tk.getScreenSize();
    frm.setSize((int)d.getWidth(),(int)d.getHeight());
    //frm.setSize(300,300);   
    frm.setVisible(true);   
  //设置默认的关闭操作  
    frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     
  }   


public void openFile()  //打开文件  
         {   
            //设置打开文件对话框的标题  
              fc.setDialogTitle("Open File");   

            //这里显示打开文件的对话框  
         try{    
                     flag=fc.showOpenDialog(frm);    
              }   
         catch(HeadlessException head){    

                     System.out.println("Open File Dialog ERROR!");   
              }   
               
            //如果按下确定按钮,则获得该文件。  
            if(flag==JFileChooser.APPROVE_OPTION)   
              {   
                   //获得该文件  
                     f=fc.getSelectedFile();   
                     System.out.println("open file----"+f.getName());   
               }   
         }   


private void readFile()//保存文件  
       {   
           String fileName;   

         //设置保存文件对话框的标题  
           fc.setDialogTitle("Save File");    

         //这里将显示保存文件的对话框  
      try{    
                flag=fc.showSaveDialog(frm);   
           }   
      catch(HeadlessException he){   
                System.out.println("Save File Dialog ERROR!");    
           }   

         //如果按下确定按钮,则获得该文件。  
         if(flag==JFileChooser.APPROVE_OPTION)   
           {   
               //获得你输入要保存的文件  
                 f=fc.getSelectedFile();   
               //获得文件名  
                 fileName=fc.getName(f);   
               //也可以使用fileName=f.getName();  
                 System.out.println(fileName);   
           }   
       }   

//按钮易做图类内部类  
class action implements ActionListener   
  {   
    public void actionPerformed(ActionEvent e)   
      {   

        //判断是哪个按纽被点击了  
        if(e.getSource()==open)   
             openFile();   
        else  
        if(e.getSource()==read)   
             readFile();   
      }   
  }   

public static void main(String[] args)   
  {   
  new try1();   
  
   }   
}
--------------------编程问答-------------------- 文件都选中了,就逐行读取内容啊 --------------------编程问答-------------------- //如果按下确定按钮,则获得该文件。  
         if(flag==JFileChooser.APPROVE_OPTION)   
           {   
               //获得你输入要保存的文件  
                 f=fc.getSelectedFile();   
               //获得文件名  
                 fileName=fc.getName(f);   
               //也可以使用fileName=f.getName();  
                 System.out.println(fileName);   
//这里读取文件中的内容。
           }   

参考:

public static List<String> readFile(File f) throws IOException {
if (f == null || !f.exists()) {
return null;
}
List<String> list = new ArrayList<String>();
String encoding = "UTF-16LE";
InputStreamReader read = new InputStreamReader(new FileInputStream(f),
encoding);
BufferedReader br = new BufferedReader(read);
String line = null;
while ((line = br.readLine()) != null) {
list.add(line);
}
br.close();
read.close();
return list;
}
--------------------编程问答--------------------

//如果按下確定按鈕,則獲得該文件。  
if(flag==JFileChooser.APPROVE_OPTION){   
t.setText("");//把你的textarea設置成全局
//獲得該文件  
f=fc.getSelectedFile();   
System.out.println("open file----"+f.getName()); 
       
try {
InputStreamReader read = new InputStreamReader(
new FileInputStream(f));
BufferedReader br = new BufferedReader(read);
String line = null;
while ((line = br.readLine()) != null) {
t.append(line+"\n");
}
br.close();
read.close(); 
} catch (Exception e) {
// TODO: handle exception

}   
--------------------编程问答--------------------
DefaultEditorKit kit = new DefaultEditorKit();
File file = ...; // jfilechooser 返回的文件
try(FileReader reader = new FileReader(file)){
    kit.read(reader,jta.getDocument(),0);
}catch(IOException|BadLocationException e){
    ...// process exception
}
--------------------编程问答--------------------
引用 3 楼 robysomo 的回复:

//如果按下確定按鈕,則獲得該文件。  
if(flag==JFileChooser.APPROVE_OPTION){   
t.setText("");//把你的textarea設置成全局
//獲得該文件  
f=fc.getSelectedFile();   
System.out.println("open file----"+f.getName()); 
       
try {
InputStreamReader read = new InputStreamReader(
new FileInputStream(f));
BufferedReader br = new BufferedReader(read);
String line = null;
while ((line = br.readLine()) != null) {
t.append(line+"\n");
}
br.close();
read.close(); 
} catch (Exception e) {
// TODO: handle exception

}   

明白了,谢谢!我的问题出在没把JTextArea设置成全局。但是读入中文是乱码,不知道该怎么解决? --------------------编程问答--------------------
引用 2 楼 huxiweng 的回复:
//如果按下确定按钮,则获得该文件。  
         if(flag==JFileChooser.APPROVE_OPTION)   
           {   
               //获得你输入要保存的文件  
                 f=fc.getSelectedFile();   
               //获得文件名  
                 fileName=fc.getName(f);   
               //也可以使用fileName=f.getName();  
                 System.out.println(fileName);   
//这里读取文件中的内容。
           }   

参考:

public static List<String> readFile(File f) throws IOException {
if (f == null || !f.exists()) {
return null;
}
List<String> list = new ArrayList<String>();
String encoding = "UTF-16LE";
InputStreamReader read = new InputStreamReader(new FileInputStream(f),
encoding);
BufferedReader br = new BufferedReader(read);
String line = null;
while ((line = br.readLine()) != null) {
list.add(line);
}
br.close();
read.close();
return list;
}

谢谢!但是文档是中文的话读入以后是乱码。请问怎么解决呀?
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,