如何在保持换行的同时将.txt文件读取为单个Java字符串



实际上,每个代码示例都逐行读取TXT文件,并将其存储在String数组中我不想逐行处理,因为我认为这对我的需求来说是不必要的资源浪费:我只想快速有效地将.txt内容转储到一个String中。下面的方法可以完成任务,但有一个缺点:

private static String readFileAsString(String filePath) throws java.io.IOException{
    byte[] buffer = new byte[(int) new File(filePath).length()];
    BufferedInputStream f = null;
    try {
        f = new BufferedInputStream(new FileInputStream(filePath));
        f.read(buffer);
        if (f != null) try { f.close(); } catch (IOException ignored) { }
    } catch (IOException ignored) { System.out.println("File not found or invalid path.");}
    return new String(buffer);
}

缺点是换行符被转换为长空格,例如"。

我希望换行符从\n或\r转换为<br>(HTML标记)。

提前谢谢。

使用扫描仪并自己添加换行符怎么样:

sc = new java.util.Scanner ("sample.txt")
while (sc.hasNext ()) {
   buf.append (sc.nextLine ());
   buf.append ("<br />");
}

我看不出你的长空位是从哪里来的。

您可以直接读取缓冲区,然后从缓冲区创建一个字符串:

    File f = new File(filePath);
    FileInputStream fin = new FileInputStream(f);
    byte[] buffer = new byte[(int) f.length()];
    new DataInputStream(fin).readFully(buffer);
    fin.close();
    String s = new String(buffer, "UTF-8");

您可以添加以下代码:

return new String(buffer).replaceAll("(rn|r|n|nr)", "<br>");

这就是你要找的吗?

代码将读取文件中出现的文件内容,包括换行符。如果你想把break改成其他的东西,比如在html中显示等等,你要么需要后期处理,要么通过逐行读取文件来完成。由于您不想要后者,您可以通过以下方式替换您的退货:应该进行转换-

return (new String(buffer)).replaceAll("r[n]?", "<br>");
StringBuilder sb = new StringBuilder();
        try {
            InputStream is = getAssets().open("myfile.txt");
            byte[] bytes = new byte[1024];
            int numRead = 0;
            try {
                while((numRead = is.read(bytes)) != -1)
                    sb.append(new String(bytes, 0, numRead));
            }
            catch(IOException e) {
            }
            is.close();
        }
        catch(IOException e) {
        }

生成的String:String result = sb.toString();

然后在这个result中替换您想要的任何内容。

我同意@Sanket Patel的一般方法,但使用Commons I/O,您可能需要File Utils。

所以你的码字看起来像:

String myString = FileUtils.readFileToString(new File(filePath));

还有另一个版本可以指定备用字符编码。

您应该尝试org.apache.commons.io.IOUtils.toString(InputStream是)以String形式获取文件内容。在那里,您可以传递InputStream对象,您将从获得该对象

getAssets().open("xml2json.txt")    *<<- belongs to Android, which returns InputStream* 

在您的活动中。要获得字符串,请使用此:

String xml = IOUtils.toString((getAssets().open("xml2json.txt")));

所以,

String xml = IOUtils.toString(*pass_your_InputStream_object_here*);

相关内容

  • 没有找到相关文章

最新更新