Java 打印前是否打开文件?

Java 打印前是否打开文件?,java,printing,Java,Printing,嗨,我正在用这个程序打印我的文件。打印前它会打开文件吗?我想删除它。有什么建议吗 import java.awt.Desktop; import java.io.File; import java.io.IOException; public class PrintFile { public static void fileToPrint(File fis) { try { Desktop desktop = null; if (Desktop.i

嗨,我正在用这个程序打印我的文件。打印前它会打开文件吗?我想删除它。有什么建议吗

import java.awt.Desktop;
import java.io.File;
import java.io.IOException;

public class PrintFile {    

  public static void fileToPrint(File fis) {
    try {
      Desktop desktop = null;
      if (Desktop.isDesktopSupported())
      {

        desktop = Desktop.getDesktop();  

      }   
       desktop.print(fis);  
       System.out.print("Printing Document");
    }
    catch (IOException ioe)
    {
      ioe.printStackTrace();
    }

  }
}

AWT中的桌面API使用系统的本机功能(在本例中为Windows)。JVM可能使用“print”命令在文件上调用ShellExecute/ShellExecuteEx。Windows处理该命令的方式是在注册表中搜索文件类型的print命令,然后运行该命令。对于大多数文件类型,这将导致处理该文件的应用程序打开,然后自动执行打印命令


简言之,我认为在没有打开应用程序的情况下,您无法使用桌面API。您需要自己完成所有打印工作(当然,这是非常困难的。)

这个桌面API也会在linux系统上运行吗?我不确定linux JVM将使用什么方法进行打印,尽管我认为它是类似的。不管怎样,任务都将委托给本机系统的文件打印方法,这几乎总是涉及启动文件类型的处理程序,因为这是唯一知道如何正确打印文件的应用程序。