所以我试图让一个基本的读者去,以便我以后可以使用文件进行身份验证过程。
我遇到的问题是我的BufferedReader行出错,导致我的try函数抛出一个非法的启动异常,它不会运行。 Eclipse在br声明结尾处显示了分号的错误,并说我应该放一个{但我不明白为什么那是必要的。
BufferedReader br = new BufferedReader(new FileReader("Assign4.txt"));
我试图把它放在那里,但它打破了整个尝试部分。
package main;
import java.io.*;
public class file_interface
{
BufferedWriter wr = new BufferedWriter(new FileWriter("target.txt"));
BufferedReader br = new BufferedReader(new FileReader("Assign4.txt"));
try
{
int count = 1;
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null)
{
sb.append(count++);
sb.append(line);
sb.append("\n");
wr.write(line);
line = br.readLine();
}
}
catch (IOException e)
{
System.err.println("Error: " + e);
}
finally
{
br.close();
wr.close();
}
}
}
答案 0 :(得分:4)
任何Java句子都必须在方法内。这段代码不是。
BufferedWriter wr = new BufferedWriter(new FileWriter("target.txt"));
工作的事实是因为在file_interface
类中声明为default field(没有给出范围标记)并且正在初始化。它类似于:
public class file_interface {
BufferedWriter wr;
public file_interface() {
wr = new BufferedWriter(new FileWriter("target.txt"));
}
}
只需创建一个方法来保存逻辑:
public class file_interface {
public void foo() {
//your code goes here...
//now this is not a field but a variable in the method
BufferedWriter wr = new BufferedWriter(new FileWriter("target.txt"));
BufferedReader br = new BufferedReader(new FileReader("Assign4.txt"));
//rest of your code...
try {
//...
} catch (...) {
//...
}
//...
}
}
然后在您的客户端类中调用您的方法。例如,使用main
方法的类:
public class AMainClass {
public static void main(String[] args) {
file_interface fi = new file_interface();
fi.foo();
}
}
另一个例子,一个用另一个方法的类:
public class SomeClientClass {
public void bar() {
file_interface fi = new file_interface();
fi.foo();
}
}
注意:您还应该遵循Java命名约定,因此您应该file_interface
或FileInterface
重命名MyFileUtil
,因为interface
字听起来更多声明,嗯,interface
。