所以,我试图用java读取一个文件。该文件只包含一行,是一组由星号分隔的设置。
计划是使用.split方法将它们解析为数组,并将每个数组索引分配给正确的变量。
不幸的是,尽管我的文件显然存在,但它返回输出的空值,这是不正确的。
这是我的代码:
try {
try {
/* Create and display the form */
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch ( InstantiationException | IllegalAccessException ex) {
Logger.getLogger(JFrame.class.getName()).log(Level.SEVERE, null, ex);
}
Logger.getLogger(JFrame.class.getName()).log(Level.SEVERE, "Loaded okay.");
} catch (ClassNotFoundException ex) {
Logger.getLogger(JFrame.class.getName()).log(Level.SEVERE, null, ex);
}
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new JFrame().setVisible(true);
}
});
String s = System.getenv("APPDATA");
File f = new File(s + "\\TinyboardMod\\settings.txt");
if(f.exists() && !f.isDirectory()) {
BufferedReader br = new BufferedReader(new FileReader(f));
String line;
while ((line = br.readLine()) != null) {
// process the line.
String settingsString = br.readLine();
Logger.getLogger(JFrame.class.getName()).log(Level.SEVERE, settingsString);
//settings = settingsString.split("\\[");
}
br.close();
}
所以,控制台在记录器中显示为null,但是,如果文件不存在,它就不会那么远,所以问题出在那几行,我只是看不到它< / p>
答案 0 :(得分:8)
此
String settingsString = br.readLine();
应该是
String settingsString = line; // or just use line directly
否则,您正在while
循环条件中读取一行,而在该语句中读取另一行。