Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java如何向任何用户读取/写入文件';s桌面_Java_File_Io_Desktop - Fatal编程技术网

Java如何向任何用户读取/写入文件';s桌面

Java如何向任何用户读取/写入文件';s桌面,java,file,io,desktop,Java,File,Io,Desktop,我想从用户的桌面读取一个文件,然后将一个新文件写入桌面。下面是在我自己的计算机上执行此操作的代码,但我不确定如何为任何用户执行此操作 我发现了之前提出的问题,但我不确定如何在Java中实现这样一个方法。我可能会使用这种方法吗 任何帮助或建议都将不胜感激。谢谢 public static String [] read() { ArrayList<String> fileArrList = new ArrayList<>(); Scanner scan = n

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

我发现了之前提出的问题,但我不确定如何在Java中实现这样一个方法。我可能会使用这种方法吗

任何帮助或建议都将不胜感激。谢谢

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)
    {
    }    
}  
公共静态字符串[]读取()
{
ArrayList fileArrList=新的ArrayList();
扫描仪扫描=新扫描仪(System.in);
System.out.print(“文件名>”);
字符串文件名=scan.nextLine();
尝试
{
扫描仪文件=新扫描仪(新文件(“C:\\Users\\pez\\Desktop\\\”+文件名));
while(file.hasNextLine())
{
String line=file.nextLine();
fileArrList.add(行);
}
file.close();
String[]fileArr=新字符串[fileArrList.size()];
fileArr=fileArrList.toArray(fileArr);
返回文件arr;
}
捕获(FileNotFoundException fnfe)
{
System.out.println(“未找到文件”);
}
返回null;
}
公共静态无效写文件(ArrayList outputArr)
{
尝试
{
FileOutputStream fos=新的FileOutputStream(“C:\\Users\\pez\\Desktop\\output.txt”,false);
PrintWriter pw=新的PrintWriter(fos);
用于(对象i:outputArr)
{
pw.println(i);
}
关闭();
}
捕获(FileNotFoundException fnfe)
{
}    
}  

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

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

我假设您知道您仅限于这样的windows环境。

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

    File desktop = new File(System.getProperty("user.home"), "/Desktop"); 
    Scanner file = new Scanner(new File(desktop, fileName));
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);
}
您可以轻松地在项目中实现所有这些代码。
我希望你觉得这很有用,对不起,我的英语不好。

谢谢!有没有一种方法可以在所有平台上保持可用性,而无需特别要求用户输入文件的位置?
user.home
是独立于平台的,但在LinuxThank中,桌面目录的位置因不同的桌面环境而异,这很有效。如何修改
writeNewFile()
函数以自动写入桌面并命名文件
output.txt
?我尝试了几种方法,代码可以编译并运行,但该文件从未出现在桌面上。请确保使用
file output=new file(desktop,“output.txt”)
PrintWriter pw=new PrintWriter(output)
创建文件。可能需要调试和检查
输出的结果路径。