我有FileHandle类:
public class FileHandle {
public static String a;
public static String b;
public static String c;
public void openFile() throws FileNotFoundException {
File dir = new File("C:/Folder/DB");
if (dir.isDirectory()) {
for (File file : dir.listFiles()) {
Scanner s = new Scanner(file);
//String f = file.getName();
// System.out.println("File name:" + f );
while (s.hasNext()) {
a = s.next();
b = s.next();
c = s.next();
System.out.printf("%s\n %s\n %s\n", a,b,c);
}
}
}
和Constants类:
public class Constants {
FileHandle h = new FileHandle();
public static final String[] LIST_DATA = {FileHandle.a,FileHandle.b,FileHandle.c};
public static final int NEW_ELEMENT_ID = 0;
}
主要问题:为什么在我的常量课程中我只获得最后扫描的文档信息。顺便提一下,想提一下FileHandle类扫描器工作正常,一切都很好。唯一真正的困难是将变量发送到Constants类,因为我提到我只获取最后扫描的文档信息。
答案 0 :(得分:1)
不确定理解你的问题。但假设想要跟踪不同的呼叫,您可以:
连接a
,b
和c
中的字符串:
a = (a == null) ? s.next() : a + " " + s.next();
b = (b == null) ? s.next() : b + " " + s.next();
c = (c == null) ? s.next() : c + " " + s.next();
制作a
,b
和c
列表:
public static List<String> a = new ArrayList<String>;
public static List<String> b = new ArrayList<String>;
public static List<String> c = new ArrayList<String>;
...
a.add(s.next());
b.add(s.next());
c.add(s.next());
因为静态值由同一个类的所有实例共享,所以当您指定它来覆盖所有以前的值时。
警告:上面没有使用同步,不线程安全......