Java如何向/从任何用户的桌面读取/写入文件

时间:2014-08-09 22:17:01

标签: java file io desktop

我想从用户桌面读取文件,然后将新文件写入桌面。下面是在我自己的计算机上执行此操作的代码,但我不确定如何为任何用户执行此操作。

我发现了this之前提出的问题,但我不确定如何在Java中实现这样的方法。我可以使用System.getProperty()方法吗?

感谢任何帮助或建议。谢谢!

public static String [] read()
{
    ArrayList<String> fileArrList = new ArrayList<>();
    Scanner scan = new Scanner(System.in);
    System.out.print("File name > ");
    String fileName = scan.nextLine();

    try
    {
        Scanner file = new Scanner(new File("C:\\Users\\pez\\Desktop\\" + fileName));

        while (file.hasNextLine())
        {
            String line = file.nextLine();
            fileArrList.add(line);
        }

        file.close();

        String [] fileArr = new String[fileArrList.size()];
        fileArr = fileArrList.toArray(fileArr);

        return fileArr;
    }
    catch (FileNotFoundException fnfe)
    {
        System.out.println("File not found");
    }

    return null;
}

public static void writeNewFile(ArrayList outputArr)
{
    try
    {
        FileOutputStream fos = new FileOutputStream("C:\\Users\\pez\\Desktop\\output.txt", false);
        PrintWriter pw = new PrintWriter(fos);

        for (Object i : outputArr)
        {
            pw.println(i);
        }

        pw.close();
    }
    catch (FileNotFoundException fnfe)
    {
    }    
}  

2 个答案:

答案 0 :(得分:2)

您可以使用系统属性user.home

    File desktop = new File(System.getProperty("user.home"), "/Desktop"); 
    Scanner file = new Scanner(new File(desktop, fileName));

我假设您知道这种方式仅限于Windows环境。

答案 1 :(得分:1)

我将为您提供可在项目中实施的简单示例。 要获取Windows用户名,您可以获取属性user.name

System.getProperty("user.name");

要在文件上书写,您可以使用以下简单代码:

PrintWriter writer = new PrintWriter("filename.txt", "UTF-8");
writer.println("Some text");
writer.println("Some other text");
writer.close();

要阅读文本文件,您可以使用:

BufferedReader br = new BufferedReader(new FileReader("/path/to/filename.txt"));
String textLine = null;
while ((textLine = br.readLine()) != null) {
    System.out.println(textLine);
}

您可以轻松地在项目中实现所有这些代码。 我希望你觉得这很有用,对不起我的英语。