因此,我试图让基本的读者开始学习,以便以后可以使用文件进行身份验证过程。
我遇到的问题是,我在BufferedReader行上遇到错误,导致我的try函数抛出非法的启动异常,并且该异常无法运行。 Eclipse在br声明的末尾向我显示了一个分号错误,并说我应该放一个{,但我不明白为什么这样做是必要的。
BufferedReader br = new BufferedReader(new FileReader("Assign4.txt"));
我尝试将其放在此处,但它破坏了整个try部分。
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();
}
}
}
任何Java句子都必须在方法内部。此代码不是。
BufferedWriter wr = new BufferedWriter(new FileWriter("target.txt"));
起作用的事实是因为在default field类中将其声明为file_interface
(未给出范围标记),并且正在初始化。类似于:
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
。
出现相同的错误,我不知道