对于非常大的文件,无法将文件转换为字符串?

时间:2018-04-23 22:04:58

标签: java file

我试图实现一个bufferedreader,以便将.txt文件,特别是Iliad转换为字符串。我已经测试了小文件,但它们已经有效,但较大的文件没有。当我尝试在while循环完成后打印fileString时,没有显示输出。这是我的代码。

String fileString = "";
    String line = "";
    char readChar;

    BufferedReader br;
    try {
        br = new BufferedReader(new FileReader(inputFile));
        while((line=br.readLine())!=null)
        {
            fileString = fileString + line;System.out.println(fileString);
        }
        br.close();
    } catch (IOException e) {
        e.printStackTrace();
    }System.out.println(fileString);

2 个答案:

答案 0 :(得分:2)

回想一下,字符串在java中是不可变的。这意味着您从namespace CIS.API.Student { public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; set; } services.AddSingleton(Configuration); services.AddMvc(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseCors(x => x .AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials()); app.UseMvc(); } } } 构建字符串的方式效率极低且资源成本高。

您可以使用StringBuilder或StringBuffer。在我的例子中,我使用StringBuilder,因为它似乎不需要担心同步。

+

试试这个。虽然,我不确定println函数是否能够打印整个字符串。

答案 1 :(得分:0)

你正在慢慢地进行字符串连接。非常缓慢的方式。使用StringBufferStringBuilder

它与BufferedReader无关,正如一个简单的测试所示:删除循环体中的代码。