我正在将文件加载到缓冲区中,该缓冲区已加载到字符串缓冲区中。然后我将这个字符串缓冲区复制到一个字符串中。字符串打印为...
萨姆
RAVON
阿什利
安妮
所以我想为这个字符串创建一个数组,这样我就可以将第一行和第二行一次放入一个函数中,该函数为LinkedList创建一个带有用户名和密码的节点... ex用户名:Sam,密码:ravon。然后将其加载到LinkedList中。我在链接列表中的所有功能都在工作,但我似乎无法将我的字符串拆分成数组。
我想的就像......
String[] userContent = content.split("\n")
会将内容的每个元素放入userContent [n] string where
userContent[0] = Sam, userContent[1] = ravon
等等。但事实并非如此。
我正在使用的代码 - 它将链接列表和文件名作为参数
public static void readUserFile(String fName, LinkedList<dataUser> ll) {
try {
File file = new File(fName);
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuffer stringBuffer = new StringBuffer();
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuffer.append(line);
stringBuffer.append("\n");
}
LineNumberReader lnr = new LineNumberReader(new FileReader(new File("userData.txt")));
lnr.skip(Long.MAX_VALUE);
lnr.close();
fileReader.close();
int realSize = lnr.getLineNumber();
//String[] userContent = line.split("\n");
String content = stringBuffer.toString();
String[] userContent = content.split("/n");
//this prints nothing, would expect it to print exactly what content prints
for(int i = 0; i < realSize; i++) {
System.out.println(userContent[i]);
}
/* this is what I want to load the userContent string into
//not working
for(int i = 0; i < realSize; i++) {
dataUser tempUser = new dataUser(userContent[i], userContent[i+1]);
ll.add(tempUser);
i = i + 1;
}*/
//System.out.println(content); //works and prints the file with new lines
//System.out.println("Contents of file:");
//System.out.println(stringBuffer.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
答案 0 :(得分:1)
为了它的价值,下面的代码将执行相同的操作而不创建/拆分字符串并不必要地重新打开文件,如果碰巧碰到一个异常,也不会抛出异常用户但没有密码的文件。
BufferedReader br = new BufferedReader(new FileReader(fName));
String user;
while ((user = br.readLine()) != null) {
String pass = br.readLine();
if (pass == null) {
System.out.println("Warning: User found with no password: " + user);
break;
}
ll.add(new DataUser(user, pass));
}
答案 1 :(得分:0)
现在你只检查空格,
split("\n")
将%% n用于新行, 或者您可以使用%% W 这不是字母数字字符 快乐的编码