我有一个制表符分隔的文件,我希望按制表符和换行符拆分,其中制表符表示字段之间的分隔符,换行符表示应创建的新对象。该文件可能如下所示:
Peter\tpeter@example.com\tpeterpassword\nBob\tbob@bobby.com\tbobbypassword\n...
其中\t
是标签,\n
是换行符。
我想启用上传此文件到我的程序,该程序为文件中的每一行创建一个新用户,并在该行上显示字段。但是我如何使用两个标记 - tab和换行符?我的代码如下所示:
String everything = "";
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(file.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
//now create object according to the string
StringTokenizer st = new StringTokenizer(line , "\t");
String name = st.nextToken();
String email = st.nextToken();
String password = st.nextToken();
User.createNewUser(name, email, password);
sb.append(line);
sb.append('\n');
line = br.readLine();
}
everything = sb.toString();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Everything: " + everything);
代码会像上面那样工作吗?
答案 0 :(得分:2)
我会为每一行做String.split("\\n")
。然后,您将获得每个用户所需的所有信息。做另一个String.split("\\t")
并使用结果数组构造您的对象。
来自Java Doc:
StringTokenizer是一个遗留类,出于兼容性原因而保留,尽管在新代码中不鼓励使用它。建议任何寻求此功能的人都使用String的split方法或java.util.regex包。
http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html