以下代码用于使用java读取或写入文件,但是:
Eclipse打印出这些错误:
这段代码有什么问题:
//Class File_RW
package R_2;
import java.io.File;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.lang.NullPointerException;
public class File_RW {
public File_RW() throws FileNotFoundException, NullPointerException {
File file_to_read = new File("C:/myfiletoread.txt");
FileReader file_reader = new FileReader(file_to_read);
int nr_letters = (int)file_to_read.length()/Character.BYTES;
char buffer_1[] = new char[nr_letters];
}
public void read() {
file_reader.read(buffer_1, 0, nr_letters);
}
public void print() {
System.out.println(buffer_1);
}
public void close() {
file_reader.close();
}
public File get_file_to_read() {
return file_to_read;
}
public int get_nr_letters() {
return nr_letters;
}
public char[] get_buffer_1() {
return buffer_1;
}
//...
}
//main method @ class Start:
package R_2;
import java.io.File;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.lang.NullPointerException;
public class Start {
public static void main(String[] args) {
File_RW file = null;
try {
file = new File_RW();
} catch (NullPointerException e_1) {
System.out.println("File not found.");
}
//...
}
}
我找不到任何错误。我还尝试在类的构造函数中包含try catch
语句" File_RW",但错误消息是相同的。
答案 0 :(得分:1)
是的,您的代码中存在错误 - 具有非常基本性质:您声明变量而不是字段即可。 含义:你在构造函数中有它们,但是它们需要一层了!在构造函数或方法中声明实体时,它是变量,只存在于该构造函数/方法中。
如果您希望多个方法可以使用该实体,则它必须是字段,在封闭类的范围内声明,如:
class FileRW {
private File fileToRead = new File...
...
然后您可以在所有方法中使用字段!请注意:您可以在构造函数中进行实际设置:
class FileRW {
private File fileToRead;
public FileRW() {
fileToRead = ..
但你不必这样做。
最后:请阅读有关java语言约定的内容。你避免使用" _"在名称中(仅适用于SOME_CONSTANT)!
答案 1 :(得分:0)
javacode已经在运行...... thx 在Visual Studio express中使用c ++编辑的相同程序... 访问stackoverflow条目链接: c++ file read write-error: Microsoft Visual C++ Runtime libr..debug Assertion failed, expr. stream.valid()