在Java中保存File as String的内容?

时间:2013-06-24 09:44:17

标签: java arrays file

我正在使用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中使用它。这就是为什么我需要将文件的内容作为单个字符串

4 个答案:

答案 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();
}