我是Java编程新手,我想我已经清楚了什么是对象以及如何使用它们。你认为我滥用静力学吗?
但是,现在我正在编写一个程序,我注意到我已经在方法中使用了很多'static'关键字,并且我怀疑它是否真的是必须的,逻辑的,还是它是因为我并没有在脑海中想到面向对象的概念。
更具体地讲,我的程序应该从一个txt文件中读取,并把每一行中一个ArrayList,这是我的代码:
public class FileBody {
private static final String SEPARATOR = ";";
private static String headerField1 = "regex";
private static String headerField2 = "origin";
private static String headerField3 = "destination";
private static final String HEADER = headerField1 + SEPARATOR + headerField2
+ SEPARATOR + headerField3 + SEPARATOR;
// Getters & setters
public static String getHeader() {
return HEADER;
}
public static String getHeaderField1() {
return headerField1;
}
public static void setHeaderField1(String headerField1) {
FileBody.headerField1 = headerField1;
}
public static String getHeaderField2() {
return headerField2;
}
public static void setHeaderField2(String headerField2) {
FileBody.headerField2 = headerField2;
}
public static String getHeaderField3() {
return headerField3;
}
public static void setHeaderField3(String headerField3) {
FileBody.headerField3 = headerField3;
}
// End getters & setters
public static File createFileIfNotExists(String path) throws IOException {
File file = new File(path);
if (file.createNewFile());
return file;
}
public static File getFile(String path) throws IOException {
File file = createFileIfNotExists(path);
return file;
}
public static boolean isEmpty(File file) throws Exception {
FileReader fileReader = new FileReader(file);
if (fileReader.read() != -1) {
fileReader.close();
return false;
} else {
fileReader.close();
return true;
}
}
public static void writeHeaderToEmptyFile(File file) throws Exception {
if (isEmpty(file)) {
BufferedWriter bufferedWriter = new BufferedWriter(
new FileWriter(file, false));
bufferedWriter.write(HEADER);
bufferedWriter.close();
} else {
return;
}
}
public static ArrayList<String> getLines(File file) throws Exception {
ArrayList<String> lines = new ArrayList<>();
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
while (bufferedReader.ready()) {
lines.add(bufferedReader.readLine());
}
bufferedReader.close();
return lines;
}
}
你认为我可以使用对象做得更好?如果答案是肯定的,你能否给我这样做的指导方针?
非常感谢您的帮助。
你应该问问自己,你应该怎么用FileBody类来表示多个文件体。 – Eran
确切地说,您只能拥有一个文件实例 –
不要打扰手动关闭资源 - 请尝试使用资源。它不那么冗长,也不太容易出错。 –