【问题标题】:How to save something to the desktop without hard-coding the directory?如何在不对目录进行硬编码的情况下将内容保存到桌面?
【发布时间】:2012-04-15 21:49:50
【问题描述】:

我想知道如何让java在不写的情况下将名为hello.txt的文本文件保存到桌面

"C:\\Users\\Austin\\Desktop"

任何帮助都会很棒。比如:

FileWriter fileWriter = new FileWriter(fileName.getText(), true);

..fileName.getText() 将成为“你好”。

更新: 我认为我将能够使用 jfilechooser,这样可以吗?

JFileChooser chooser = new JFileChooser();
chooser.setVisible(true);

这行得通吗?如果是这样,我将如何使用其中的选择来保存文件? 我是菜鸟.... :(

【问题讨论】:

  • 如果您知道操作系统,那么您可以使用用户主文件夹快捷方式名称来创建相对于用户主目录的完整桌面目录。
  • C:\\Users\\NoAustin\\Desktop.... 你能更具体地说明你想要什么吗?你只是想从环境中获取主目录还是别的什么?
  • 这是您要找的吗? stackoverflow.com/questions/1080634/…
  • 好吧,我在考虑 mac 和 windows,那么 windows 7 的用户主文件夹快捷方式是什么>
  • 我不知道任何简单的与操作系统无关的解决方案。您可能必须为每个平台创建一个解决方案。

标签: java user-interface text


【解决方案1】:
import java.io.File;

class FindDesktopOnWindows {

    public static void main(String[] args) throws Exception {
        if (System.getProperty("os.name").toLowerCase().indexOf("win")<0) {
            System.err.println("Sorry, Windows only!");
            System.exit(1);
        }
        File desktopDir = new File(System.getProperty("user.home"), "Desktop");
        System.out.println(desktopDir.getPath() + " " + desktopDir.exists());

        java.awt.Desktop.getDesktop().open(desktopDir);
    }
}

我忘记了不同的语言环境。 非常脆弱的代码(即使是针对特定操作系统的代码)。请参阅下面我的评论。 OS X/JFileChooser.

..(System.getProperty("user.home"), "Desktop") 的工作原理..

Oracle 为这类事情提供了有用的文档。

见System.getProperty(String) & new File(String,String).


我将在这方面让给专家(或用户),但我认为 OS X 不支持直接在 ..start 屏幕上的任何应用程序图标或文档图标,默认外观等等。可能更好向最终用户提供指向user.home 的JFileChooser,并要求他们将文档保存到桌面(或任何他们喜欢的地方)。

【讨论】:

  • 好的,请解释一下(System.getProperty("user.home"), "Desktop") 的工作原理?
  • 好的。所以我找不到如何制作 jfilechooser ......所以你能举个例子吗?就像只是创建一个 jframe,但让它弹出,并使其能够保存?
  • 好吧,我想免费做这个。它用于学校项目
  • +1 表示suggesting JFileChooser。在 Mac OS X 上,user.home 属性产生正确的路径。 “桌面”是一个有效的目录名称,即使它是 localized。
【解决方案2】:

这会将您指向桌面目录:

javax.swing.filechooser.FileSystemView.getFileSystemView().getHomeDirectory()

【讨论】:

  • 在 windows 上是这样,但不是 Linux :(.
  • 尝试:文件桌面 = new File(System.getProperty("user.home"), "Desktop");
【解决方案3】:

User.home 有效,但只是硬编码目录应该没问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-08
    • 2010-10-16
    • 2011-11-10
    • 2012-04-15
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    相关资源
    最近更新 更多