【问题标题】:Tried creating and writing to a file, but I'm getting error messages尝试创建和写入文件,但我收到错误消息
【发布时间】:2017-11-10 13:51:22
【问题描述】:

我正在尝试学习如何在 Java 上创建文件并对其进行写入。我一直在网上观看有关如何操作的视频。不幸的是,使用与上课的人完全相同的代码,我想出了这些我不明白的错误。


java.io.IOException: No such file or directory
    at java.io.UnixFileSystem.createFileExclusively(Native Method)
    at java.io.File.createNewFile(File.java:1012)
    at CompanyAdder.main(CompanyAdder.java:26)
java.io.FileNotFoundException: C:/Users/mychalco/Desktop/ASreader.txt (No such file or directory)
    at java.io.FileOutputStream.open0(Native Method)
    at java.io.FileOutputStream.open(FileOutputStream.java:270)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
    at java.io.FileWriter.<init>(FileWriter.java:90)
    at CompanyAdder.main(CompanyAdder.java:35)

我知道第 26 行和第 35 行显然存在错误,但我不明白还发生了什么。这是我的代码:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.util.Scanner;

public class CompanyAdder 
{
    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) 
    {
        // TODO Auto-generated method stub
        //String addCompanyName = "Y";
        //String companyName;

        File newFile = new File("C:/Users/mychalco/Desktop/ASreader.txt");

        if(newFile.exists())
        {
            System.out.println("The file already exists");
        }
        else
        {
            try
            {
                newFile.createNewFile();
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }

            try
            {
                FileWriter fileW = new FileWriter(newFile);
                BufferedWriter buffW = new BufferedWriter(fileW);
                /*System.out.println("Add a company name: ");

                while (addCompanyName.equalsIgnoreCase("Y"))
                {
                    companyName = sc.next();
                    buffW.write(companyName);
                    System.out.println("Do you want to add another company? (Y/N) ");
                    addCompanyName = sc.next();
                }*/
                buffW.close();
                System.out.println("Company names added!");
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    }

}

忽略注释行,这些是我试图对代码进行的一些更改。

谢谢,干杯。

【问题讨论】:

  • 你可以试试这个File newFile = new File("C:\\Users\\mychalco\\Desktop\\ASreader.txt");
  • 如果你的代码和人一模一样,那你有没有C:/Users/mychalco/Desktop/ASreader.txt的文件
  • 您使用的是 windows 还是 unix/linux 系统?您的文件路径是 windows,但基于错误消息的第 2 行 Java 认为它正在 Unix 上运行。
  • @YCF_L:Windows 可以很好地处理正斜杠。
  • 谢谢@JonSkeet

标签: java file filewriter bufferedwriter file-writing


【解决方案1】:

尝试以这种方式使用File.separator

File newFile = new File("C:"+File.separator+"Users"+File.separator+"mychalco"+File.separator+"Desktop"+File.separator+"ASreader.txt");

【讨论】:

  • 好吧,最好使用Paths.of... 但我认为这不是问题所在。
猜你喜欢
  • 1970-01-01
  • 2019-05-30
  • 1970-01-01
  • 1970-01-01
  • 2021-02-03
  • 2022-11-30
  • 2022-12-16
  • 2014-05-03
相关资源
最近更新 更多