我正在使用java中的配置文件和文件读取器类。 我总是在带有数组的文件中读/写,因为我正在使用对象。 看起来有点像这样:
public void loadUserData(ArrayList<User> arraylist) {
try {
List<String> lines = Files.readAllLines(path, Charset.defaultCharset());
for(String line : lines) {
String[] userParams = line.split(";");
String name = userParams[0];
String number= userParams[1];
String mail = userParams[2];
arraylist.add(new User(name, number, mail));
}
} catch (IOException e) {
e.printStackTrace();
}
}
这很好用,但是如何将文件内容保存为只有一个字符串?
当我读取文件时,我使用的字符串应该与文件的内容完全相同(不使用数组或行分割)。 我怎么能这样做?
修改
我尝试从文件中读取一个SQL语句,以便稍后在JDBC中使用它。这就是为什么我需要将文件的内容作为单个字符串
答案 0 :(得分:2)
此方法可以使用
public static void readFromFile() throws Exception{
FileReader fIn = new FileReader("D:\\Test.txt");
BufferedReader br = new BufferedReader(fIn);
String line = null;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line);
sb.append("\n");
}
String text = sb.toString();
System.out.println(text);
}
答案 1 :(得分:1)
我希望这就是你所需要的:
public void loadUserData(ArrayList<User> arraylist) {
StringBuilder sb = new StringBuilder();
try {
List<String> lines = Files.readAllLines(path, Charset.defaultCharset());
for(String line : lines) {
// String[] userParams = line.split(";");
//String name = userParams[0];
//String number= userParams[1];
//String mail = userParams[2];
sb.append(line);
}
String jdbcString = sb.toString();
System.out.println("JDBC statements read from file: " + jdbcString );
} catch (IOException e) {
e.printStackTrace();
}
}
或者这个:
String content = new Scanner(new File("filename")).useDelimiter("\\Z").next();
System.out.println(content);
答案 2 :(得分:1)
就这样做:
final FileChannel fc;
final String theFullStuff;
try (
fc = FileChannel.open(path, StandardOpenOptions.READ);
) {
final ByteBuffer buf = ByteBuffer.allocate(fc.size());
fc.read(buf);
theFullStuff = new String(buf.array(), theCharset);
}
nio获胜! :P
答案 3 :(得分:1)
你总是可以创建一个缓冲的阅读器,例如
File anInputFile = new File(/*input path*/);
FileReader aFileReader = new FileReader(anInputFile);
BufferedReader reader = new BufferedReader(aFileReader)
String yourSingleString = "";
String aLine = reader.readLine();
while(aLine != null)
{
singleString += aLine + " ";
aLine = reader.readLine();
}