gpt4 book ai didi

java - 无法写入java txt文件

转载 作者:行者123 更新时间:2023-12-01 10:52:12 29 4
gpt4 key购买 nike

我目前正在使用blueJ学习java,我有一个作业,我必须写入一个txt文件,检查该文件是否存在并读取该文件。我的代码在下面,可以编译,但是当我尝试运行 write() 方法时,我收到以下错误 java.lang.nullpointerexception;

我不知道我哪里出了问题,在这个阶段它开始让我发疯。

import java.io.*;

public class ReadWrite
{
// instance variables - replace the example below with your own
private String file;
private String text;

/**
* Constructor for objects of class ReadWrite
*/
public ReadWrite(String file, String text)
{
// initialise instance variables
file=this.file;
text=this.text;
}

public void write()
{


try{
FileWriter writer = new FileWriter(file);

writer.write(text);
writer.write('\n');
writer.close();
}
catch(IOException e)
{
System.out.print(e);
}


}

public boolean writeToFile()
{

boolean ok;

try{

FileWriter writer = new FileWriter(file);

{
write();
}

ok=true;
}

catch(IOException e) {

ok=false;

}

return ok;

}

public void read(String fileToRead)
{
try {
BufferedReader reader = new BufferedReader(new FileReader(fileToRead));
String line = reader.readLine();

while(line != null) {
System.out.println(line);
line = reader.readLine();
}

reader.close();

}
catch(FileNotFoundException e) {


}
catch(IOException e) {

}
}

}

最佳答案

您的构造函数正在反向分配值。现在你已经

public ReadWrite(String file, String text)
{
// initialise instance variables
file=this.file;
text=this.text;
}

这是将传入变量 filetext 分配给实例变量,这些变量为 null。

您需要拥有的是:

public ReadWrite(String file, String text)
{
// initialise instance variables
this.file = file;
this.text = text;
}

将来避免这种情况的一个有用方法是将您的参数设置为final - 这意味着您不能向它们分配任何内容,并且您将在编译器中捕获它。

public ReadWrite(final String file, final String text)
{
// won't compile!
file = this.file;
text = this.text;
}

进一步的改进是将实例变量 filetext final,这意味着它们具有被分配。这样,您就可以使用编译器来帮助您捕获错误。

public class ReadWrite
{
private final String file;
private final String text;

public ReadWrite(final String file,
final String text)
{
this.file = file;
this.text = text;
}

// ...
}

关于java - 无法写入java txt文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33799445/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com