NetBeans IDE java程序无法正确检索目录

时间:2013-11-14 08:26:00

标签: java swing netbeans java-io jfilechooser

我正在用Java编写程序(IDE:NetBeans 7.4,JDK 7,Swing API)来替代微软糟糕的记事本。

我面临的问题是,我添加了一个按钮来获取用户希望保存文件的目录。这是按钮的代码(名为choosedir):

private void choosedirActionPerformed(java.awt.event.ActionEvent evt) {                                          
  int select=choose.showOpenDialog(this);
  if (select == choose.APPROVE_OPTION){
   String dir=choose.getName(choose.getCurrentDirectory());
   directory.setText(dir.toString()+"-");
  }
}              

以上代码在文本框“directory”中设置所选目录。

现在,作者的代码:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
String dir=choose.getName(choose.getCurrentDirectory());
   directory.setText(dir.toString());
    File file=new File(dir+name+".txt");
   try{
       Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF8"));
   out.append(input.getText());
   }
   catch (UnsupportedEncodingException e) 
   {
    System.out.println(e.getMessage());
   } 
   catch (IOException e) 
   {
    System.out.println(e.getMessage());
    }
   catch (Exception e)
   {
    System.out.println(e.getMessage());
   } 
}             

问题是: 1.没有保存文件 2.无论我选择哪个目录,它都会显示Windows资源管理器中显示的目录名称。就像,如果我想要它在C:/ Windows / Temp中,它只显示Temp。或者甚至对于C:/,它显示“Local Disk C:。

更新2013年11月16日:尽管亚历克斯提供了帮助,该计划仍无法运作。以下是完整的源代码:

import java.io.*;
public class QuickPad_v1 extends javax.swing.JFrame {

/**
 * Creates new form QuickPad_v1
 */
public QuickPad_v1() {
    initComponents();
}
/* Avoid the non-programmed buttons below! */
private void extensionActionPerformed(java.awt.event.ActionEvent evt) {                                          
    // TODO add your handling code here:
}                                         

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
}                                        

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
  System.exit(0);
}                                        

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
String dir=directory.getText();
    File file=new File("C://"+name+".txt");
   try{
       Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF8"));
   out.append(input.getText());
   }
   catch (UnsupportedEncodingException e) 
   {
    System.out.println(e.getMessage());
   } 
   catch (IOException e) 
   {
    System.out.println(e.getMessage());
    }
   catch (Exception e)
   {
    System.out.println(e.getMessage());
   } 
}                                        

private void choosedirActionPerformed(java.awt.event.ActionEvent evt) {                                          
  int select=choose.showOpenDialog(this);
  if (select==choose.APPROVE_OPTION){

    }
}                                         

public static void main(String args[]) {
 java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new QuickPad_v1().setVisible(true);
        }
    });
}

请帮助!我会给你投票,保证!

1 个答案:

答案 0 :(得分:1)

详细了解如何使用JFileChooserits methods

在您的代码中,您没有完整的文件路径,可以将其保存到您想要的位置,因为它可以保存... file.getAbsoluteFile()可以帮助您了解它的位置:

String dir=choose.getName(choose.getCurrentDirectory());
directory.setText(dir.toString());
File file=new File(dir+name+".txt");

尝试下一个可以帮助您的代码:

String dir = choose.getCurrentDirectory().getAbsolutePath();
directory.setText(dir);
File file = new File(dir+ File.separator + name + ".txt");