Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JTextArea中加载大型文本文件_Java_Swing_Large Files - Fatal编程技术网

Java 如何在JTextArea中加载大型文本文件

Java 如何在JTextArea中加载大型文本文件,java,swing,large-files,Java,Swing,Large Files,我想使用Swing组件在JTextArea中快速加载大型文本文件。我尝试加载一个100MB的文件,它在几秒钟内加载。但当我尝试加载超过200MB的文件时,需要5分钟以上的时间 如何加载大型数据文件?对于阅读,我使用BufferedReader;对于显示,我使用JTextArea中的setText()方法。如果它仅用于显示内容,您可以使用不带网格线的JTable。然后,可以将RandomAccessFile与文件通道的MappedByteBuffer一起使用。对于表,行仅包含每行的文件位置列表 这

我想使用Swing组件在
JTextArea
中快速加载大型文本文件。我尝试加载一个100MB的文件,它在几秒钟内加载。但当我尝试加载超过200MB的文件时,需要5分钟以上的时间


如何加载大型数据文件?对于阅读,我使用
BufferedReader
;对于显示,我使用
JTextArea
中的
setText()
方法。如果它仅用于显示内容,您可以使用不带网格线的JTable。然后,可以将RandomAccessFile与文件通道的MappedByteBuffer一起使用。对于表,行仅包含每行的文件位置列表

这应该相当快,甚至可以实现有限的编辑,维护一个更改列表,如行插入/删除/修改


文件的代码<2GB.

请参阅可能的答案我也尝试过SwingWorker。但是,结果是一样的。这就是我再次提出问题的原因。谢谢你的回答。请尝试。你是一次设置一行还是一整行?我使用BuffereReader逐行读取并存储在StringBuilder引用中,然后将其转换为字符串文本。然后我使用textArea.setText(字符串文本)方法。我想在JTextArea中加载文件。如何使用JTable将大型文本文件加载到JTextArea中。好的,尝试
byte[]data=Files.readAllBytes(file.toPath())
,从中生成一个字符串,然后设置文本()。这应该是最快的,垃圾收集量最少。上述声明也花费了与上述相同的时间。请再次检查。