使用 BufferedReader 和 FileReader 从文件中读取
read from a file using BufferedReader, and FileReader
我对 java 比较陌生,并且很好奇如何使用缓冲 reader 从文件中读取数据。这样做的原因是我正在参加 class 并被分配做一个简单的 ceaser 密码,我应该解密一个文本文件,创建一个新文件,并将解密的文本放入该文件中。我能够使用扫描仪和一个 10KB 的小文件来执行此操作,但是在处理我将要测试的 100MB 大文本文件时速度非常慢。
这是我应该读取文件内容的代码。
public static void main(String[] args)
{
BufferedReader br = null;
FileReader file = null;
String line = null;
String all = null;
try
{
file = new FileReader("myfile.txt");
br = new BufferedReader(file);
while ((line = br.readLine()) != null) {
all += line;
}
}catch(Exception e)
{
System.out.println("nope");
}
System.out.println(all);
}
如果有人能给我指出正确的方向,那就太好了。
提前致谢
流式传输,不要将其读入内存。另外,我更喜欢 try-with-resources (因为你需要关闭你的资源)。并且您可以随时调整缓冲区大小,例如 -
final int size = 1024 * 1024;
try (BufferedReader br = new BufferedReader(new FileReader("myfile.txt"), size)) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line); // <-- stream it
}
} catch (Exception e) {
e.printStackTrace();
}
并且从不吞下Exception
(s) - "nope"不是很有帮助。
Java 中的字符串是不可变的,因此每次此代码为 运行
all += line;
创建一个新的String并赋值给所有的,使用StringBuider或者StringBuffer
例如
StringBuilder all = new StringBuilder();
希望对您有所帮助!
我对 java 比较陌生,并且很好奇如何使用缓冲 reader 从文件中读取数据。这样做的原因是我正在参加 class 并被分配做一个简单的 ceaser 密码,我应该解密一个文本文件,创建一个新文件,并将解密的文本放入该文件中。我能够使用扫描仪和一个 10KB 的小文件来执行此操作,但是在处理我将要测试的 100MB 大文本文件时速度非常慢。 这是我应该读取文件内容的代码。
public static void main(String[] args)
{
BufferedReader br = null;
FileReader file = null;
String line = null;
String all = null;
try
{
file = new FileReader("myfile.txt");
br = new BufferedReader(file);
while ((line = br.readLine()) != null) {
all += line;
}
}catch(Exception e)
{
System.out.println("nope");
}
System.out.println(all);
}
如果有人能给我指出正确的方向,那就太好了。
提前致谢
流式传输,不要将其读入内存。另外,我更喜欢 try-with-resources (因为你需要关闭你的资源)。并且您可以随时调整缓冲区大小,例如 -
final int size = 1024 * 1024;
try (BufferedReader br = new BufferedReader(new FileReader("myfile.txt"), size)) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line); // <-- stream it
}
} catch (Exception e) {
e.printStackTrace();
}
并且从不吞下Exception
(s) - "nope"不是很有帮助。
Java 中的字符串是不可变的,因此每次此代码为 运行
all += line;
创建一个新的String并赋值给所有的,使用StringBuider或者StringBuffer
例如
StringBuilder all = new StringBuilder();
希望对您有所帮助!