- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
它们之间有什么区别?我只是在学习 Java ATM,但似乎我可以双向写入文件,即(我没有在这里复制 try-catch block 。)
FileWriter file = new FileWriter("foo.txt");
file.write("foobar");
file.close();
和
FileWriter file = new FileWriter("foo.txt");
BufferedWriter bf = new BufferedWriter(file);
bf.write("foobar");
bf.close();
我理解了先缓存数据的概念,那是不是第一个例子一个一个地写入字符,第二个先把它缓冲到内存并写入一次?
最佳答案
如果你这样做,BufferedWriter 会更高效
在您的示例中,您只有一次写入,因此 BufferedWriter 只会增加您不需要的开销。
so does that mean the first example writes the characters one by one and the second first buffers it to the memory and writes it once
在这两种情况下,字符串都是一次写入的。
如果你只使用 FileWriter 你的 write(String) 调用
public void write(String str, int off, int len)
// some code
str.getChars(off, (off + len), cbuf, 0);
write(cbuf, 0, len);
}
这会进行一次系统调用,每次调用 write(String)。
BufferedWriter 提高效率的地方在于多次小写。
for(int i = 0; i < 100; i++) {
writer.write("foorbar");
writer.write(NEW_LINE);
}
writer.close();
如果没有 BufferedWriter,这可能会进行 200 (2 * 100) 次系统调用并写入磁盘,这是低效的。使用 BufferedWriter,这些都可以一起缓冲,并且由于默认缓冲区大小为 8192 个字符,因此这只需 1 个系统调用即可写入。
关于FileWriter和BufferedWriter之间的Java区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12350248/
我有一段代码,只要有可用的新数据作为 InputStream 就会生成新数据。每次都覆盖同一个文件。有时文件在写入之前变为 0 kb。 Web 服务会定期读取这些文件。我需要避免文件为 0 字节的情况
请帮我解决这个问题。我正在尝试编写一个读取 .txt 文件的代码,然后它会计算文件中每个字母的频率。这就是我想到的: public static void charCount(String file)
我一直找不到原因。我在这段代码中遇到的唯一问题是,当 FileWriter 尝试将新值放入文本文件时,它会放入一个 ?。我不知道为什么,甚至不知道这意味着什么。这是代码: if (secMessage
我正在尝试编写一个Java程序,其中用户指定他们想要输入多少“学生记录”,然后是学生的姓名、年龄和GPA,然后将其存储为文本。然而,我的文本有问题,不包括所有输入的数据和一个我无法摆脱的神秘的悬空换行
我正在尝试使用 XLS2CSV 将 Excel 文件转换为 csv 文本文件。我稍微修改了现有的类,将 PrintStream 更改为 Writer,这样我就可以使用 FileWriter 写入文件。
我使用文件编写器以类似 CSV 的格式将对象数组列表作为字符串写入文件。不管怎样,我在让它工作时遇到了问题,但现在我收到一个 FileNotFound 异常,它说创建的文件在异常中是只读的。正如我检查
我有一个程序,允许用户将信息写入文件。它不会覆盖原始文件中的所有内容,而是添加到其中。问题是,如果用户没有输入足够的信息,程序就会崩溃。 文本文件中的每一行看起来都像这样: info 1, Info
我正在热点虚拟机中的 Windows 2008 服务器(64 位)上运行我的 java 应用程序。 几个月前,我创建了一个工具来帮助检测应用程序中的死锁。在过去一个月左右的时间里,唯一给我带来任何问题
try { File file = new File(filepath+"temp.txt"); if (!file.exists()) { f
所以,基本上它可以工作,但事实并非如此。它不会抛出任何错误,只是没有完成写入文件。它确实读取了文件中的所有行,并且它们的格式都正确。我已经尝试过调试所有这些。调试“currentLine”时,所有行都
我正在尝试编写一个快速的java程序来获取csv并在SQL中创建插入语句。我不需要所有列,否则我将直接通过 csv 导入数据。当我实际写入文件时,我的特殊问题就出现了。编写器应该向文件输出 200 多
我不确定为什么我的输出函数在创建文件时没有拾取换行符。这是代码: private void outputToFile(){ final JFileChooser fc = new JFileC
我对 Java 还很陌生。我试图将“List:”添加到新文本文件的开头(如果它不存在)。相反,文本文件是空白的,输入内容位于一行空白下方。 File hi = new File("hi.txt");
好吧...所以我有一个相当有趣的错误...我声明了一个名为 file 的 FileWriter,并且让它经历以下 for 循环: for (int i = 0; i < a.radtot; i++)
我正在开发一个 Java 应用程序,它有一个 JTextArea 供用户输入文本。它可以是任意数量的行,但是我的 FileWriter 遇到了问题,它只保存了任何输入的第一行。我以前从未使用过 Swi
我试图在 *.txt 文件中添加整数值,但它打印的是 ASCII 值。 我的代码有什么问题? public static void main(String[] args) throws IOExcep
我正在使用几个 java FileWriter 将数据附加到输出文件。这些文件在处理过程中全部保持打开状态,并定期写入(附加)。有时,我在逻辑中遇到需要删除当前打开文件的内容(文件长度变为零)的情况,
我有一个简单的程序,可以读取命令并执行它们。现在我有这段代码用于将某些文本插入到文本文件中: 示例命令: INSERT "John Smith" INTO college.student 我的主要方法
我很困惑... public class Testing { public static void main(String[] args) throws FileNotFoundExcepti
在下面的 FileWriter 中,我正在写入一个名为“employee.txt”的文件。它写入文件,但最初它只是附加到文件而不是每次都进入新行。从那时起,我通过添加“\n”来编辑代码,使其下降一行。
我是一名优秀的程序员,十分优秀!