从java程序中打开任何文件

从java程序中打开任何文件,java,file,jfilechooser,Java,File,Jfilechooser,在java中打开文件似乎有点棘手--对于.txt文件,必须使用File对象与Scanner或BufferedReader对象结合使用--对于image IO,必须使用ImageIcon类--如果要从java中打开.txt文档(类似于双击应用程序),以下代码似乎可以工作: import java.io.*; public class LiterallyOpenFile { public static void main(String[] args) throws IOException

在java中打开文件似乎有点棘手--对于.txt文件,必须使用File对象与Scanner或BufferedReader对象结合使用--对于image IO,必须使用ImageIcon类--如果要从java中打开.txt文档(类似于双击应用程序),以下代码似乎可以工作:

import java.io.*;

public class LiterallyOpenFile {
    public static void main(String[] args) throws IOException {
        Runtime rt = Runtime.getRuntime();
        Process p = rt.exec("notepad Text.txt");
    }
}
我不是肯定的,但我认为其他文件类型/名称可以在exec后的括号中替换——无论如何,我计划在用户单击要打开的文件时在JFileChooser中打开某些文件(当用户单击文件时,可以使用getSelectedFile()方法获得文件路径)。虽然我更具体地希望能够从java程序在Arduino IDE中打开Arduino文件,比如模拟双击。。也许是这样的

import java.io.*;

public class LiterallyOpenFile {
    public static void main(String[] args) throws IOException {
        Runtime rt = Runtime.getRuntime();
        Process p = rt.exec("Arduino C:\\Arduino\\fibonacci_light\\fibonacci_light.ino");
    }
}

如果方向正确,我们将不胜感激。

您试过这个吗?如果您的文件在windows中有一个注册的程序,这应该可以工作。(即默认应用程序应打开该文件)

文件参数是一个
文件
对象


这是我在项目中使用
java.awt.Desktop所做的

import java.awt.Desktop;
import java.io.IOException;
import java.io.File;    
public class Main
{
     public static void main(String[] args) {
        try {
              Desktop.getDesktop().open(new File("C:\\Users\\Hamza\\Desktop\\image.png"));
            } catch (IOException e) {
              e.printStackTrace();
            }
    }
}

在Windows上,您可以始终使用
start
使用默认文件关联打开任何文件。因此,与其使用
notepad
arduino
或其他什么,不如用
start
@Woodrow替换所有的记事本。我不确定你是否在讽刺这个答案,但就我理解你的问题而言,这是正确的答案。阅读Desktop类的文档:@Christian R.不是讽刺,只是涉及arduino文件的一些奇怪的东西:这意味着arduino文件本身必须位于桌面内的文件夹中——因此我可以使用Desktop类打开包含该文件的文件夹,但不能直接打开该文件谢谢,我计划阅读Desktop类。您将文件夹“Desktop”(在windows和其他操作系统中称为)与类名混淆,但对于您的挑战,它非常适合-文件不必位于Desktop文件夹内-参数可以是任何文件对象,即:非空,文件存在,可通过安全约束读取,并且有一个关联的应用程序可与文件一起启动-如果将
JFileChooser.getSelected()
中的文件对象作为参数,则应使用关联的应用程序打开文件本身
import java.awt.Desktop;
import java.io.IOException;
import java.io.File;    
public class Main
{
     public static void main(String[] args) {
        try {
              Desktop.getDesktop().open(new File("C:\\Users\\Hamza\\Desktop\\image.png"));
            } catch (IOException e) {
              e.printStackTrace();
            }
    }
}