当前位置: 首页 > 知识库问答 >
问题:

通过java使用记事本在子目录中打开txt

禄烨然
2023-03-14
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    Runtime rt=Runtime.getRuntime();

    String file;
    file = "READTHIS.txt";

    try {
        Process p=rt.exec("notepad " +file);
    } catch (IOException ex) {
        Logger.getLogger(NumberAdditionUI.class.getName()).log(Level.SEVERE, null, ex);
    }
}  

如果有人知道怎么做,那就太好了。

另外一个注意事项是,我希望将上面显示的文件(readthis.txt)包含在实际的java包中,我将把文件放在哪里,我应该如何将java指向它?

我离开java很长一段时间了,所以我忘记了很多东西,所以非常感谢更简单的解释。感谢任何人阅读这和任何帮助将是令人敬畏的。

共有1个答案

越星晖
2023-03-14

所以我添加了configbox.java源代码,并在记事本中使jbutton1打开home\doc\readthis.txt。我创建了一个可执行的JAR,通过java-jar racercraft.jar执行JAR的过程如图所示。以我在configbox.java中所做的操作为例,并将其应用于NumberAdditionUI.java中的每个JButtons,确保将FilePath变量更改为要打开的相应文件名。

目录结构:

\home
    Rasercraft.jar
    \docs
        READTHIS.txt

代码:

// imports and other code left out

public class ConfigBox extends javax.swing.JFrame {
    // curDir will hold the absolute path to 'home\'
    String curDir; // add this line

    /**
     * Creates new form ConfigBox
     */
    public ConfigBox() 
    {
        // this is where curDir gets set to the absolute path of 'home/'
        curDir = new File("").getAbsolutePath(); // add this line

        initComponents();
    }

    /*
     * irrelevant code
     */

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        Runtime rt = Runtime.getRuntime();

        // filePath is set to 'home\docs\READTHIS.txt'
        String filePath = curDir + "\\docs\\READTHIS.txt"; // add this line

        try {
            Process p = rt.exec("notepad " + filePath); // add filePath
        } catch (IOException ex) {
            Logger.getLogger(NumberAdditionUI.class.getName()).log(Level.SEVERE, null, ex);
        }

        // TODO add your handling code here:
    }//GEN-LAST:event_jButton1ActionPerformed

    /*
     * irrelevant code
     */

文件夹层次结构的图像:

代码:
注意-这只适用于Windows。

import java.io.File;
import java.io.IOException;

public class Driver {

    public static void main(String[] args) {
        final String[] FILE_NAMES = {"\\files\\READTHIS.txt",
                                     "\\files\\sub-files\\Help.txt",
                                     "\\files\\sub-files\\Config.txt"
                                    };
        Runtime rt = Runtime.getRuntime();

        // get the absolute path of the directory
        File cwd = new File(new File("").getAbsolutePath());

        // iterate over the hard-coded file names opening each in notepad
        for(String file : FILE_NAMES) {
            try {
                Process p = rt.exec("notepad " + cwd.getAbsolutePath() + file);
            } catch (IOException ex) {
                // Logger.getLogger(NumberAdditionUI.class.getName())
                // .log(Level.SEVERE, null, ex);
            }
        }

    }
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;


public class Driver extends JFrame implements ActionListener {
    JFileChooser fileChooser;  // the file chooser
    JButton openButton;  // button used to open the file chooser
    File file; // used to get the absolute path of the file

    public Driver() {
        this.fileChooser = new JFileChooser();
        this.openButton = new JButton("Open");

        this.openButton.addActionListener(this);

        // add openButton to the JFrame
        this.add(openButton);

        // pack and display the JFrame
        this.pack();
        this.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        // handle open button action.
        if (e.getSource() == openButton) {
            int returnVal = fileChooser.showOpenDialog(Driver.this);

            if (returnVal == JFileChooser.APPROVE_OPTION) {
                // from your code
                Runtime rt = Runtime.getRuntime();

                try {
                    File file = fileChooser.getSelectedFile();
                    String fileAbsPath = file.getAbsolutePath();

                    Process p = rt.exec("notepad " + fileAbsPath);                        
                } catch (IOException ex) {
                    // Logger.getLogger(NumberAdditionUI.class.getName())
                    // .log(Level.SEVERE, null, ex);
                }
            } else {
                System.exit(1);
            }
        }

    }

    public static void main(String args[]) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                Driver driver = new Driver();
            }
        });
    }

}

如何用可执行JAR包含文本文件?

创建包含外部文件的可运行jar?

在jar文件中包含文本文件并读取它?

 类似资料:
  • 问题内容: 以前,我要求如何在FileTable不使用File I / OAPI的情况下在其中创建目录。现在,我想为我刚刚创建的父目录创建一个子目录。在插入期间如何分配我的父母?似乎是一个计算列。 这创建了我的父母… 如何在FileTable中为此父级创建子目录? 问题答案: 这是我最终用来创建子目录的原因,因为它不会为我生成新值-它只会解释现有值。 上面的代码块利用了在此发现的默认path_lo

  • 打开和关闭目录 打开和关闭目录 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * *//* * 程序清单:打开目录 * * 程序会创建一个操作文件的函数并导出到msh命令列表

  • 问题内容: 我有一个程序来打开文件并检查其长度。 现在,至少在Linux下,打开目录时会返回有效的文件描述符。这导致查找操作返回(或者,如无符号,在64位系统上为= 2 64 -1)。 不幸的是,上面的代码()中的条件无法解决这种情况,(EDIT:应该是)也没有。-将ord 作为格式字符串的命令显示比较的两面应具有相同的值。 为什么即使两边都是相同类型(),比较运算符的行为也是如此奇怪?我正在使用

  • 我遵循这个准则 重新启动发动机 重写基/ 重写规则^index.php$-[L] 重写规则^([_0-9a-zA-Z-]/)?文件/(.)wp包括/ms files.php?文件=$2[L] 重写规则^([_0-9a-zA-Z-]/)?wp admin$$1wp admin/[R=301,L] 重写Cond%{REQUEST_FILENAME}-f[OR] RewriteCond%{REQUEST

  • 问题内容: 好。简单的问题。也许不是那么简单的答案: 我有一个用Java下载的文件,我知道这是一个文本文件。无论默认文本编辑器是什么,有什么方法可以使用Java打开该文本文件?它必须适用于所有操作系统,否则我只能使用记事本打开它。 :\我猜想如果没有办法,我可以使用JOptionPane并显示文本文件的内容… 问题答案: 您可以执行以下操作: 这链接到java.awt.Desktop上的教程文章:

  • 问题内容: 我想给我的简单程序用户一个打开帮助文件的机会,以指导他们如何充分利用我的程序。理想情况下,我想在我的GUI上有一个蓝色的帮助链接,可以随时单击该链接,从而在本机文本编辑器(例如记事本)中打开.txt文件。 有没有简单的方法可以做到这一点? 问题答案: 尽管它的名称是,它将在记事本,gedit等中打开。从未尝试过,但据说可以奏效。 替代方法是使用 或作为子流程: 但是在这两种情况下,您都