Java - 使用 BufferedWriter 和 BufferedReader,[重复]
Posted
技术标签:
【中文标题】Java - 使用 BufferedWriter 和 BufferedReader,[重复]【英文标题】:Java - Using BufferedWriter and BufferedReader, [duplicate] 【发布时间】:2014-01-07 13:20:49 【问题描述】:我正在尝试生成随机数作为 id,并将它们保存在文件中以便轻松访问它们。我目前正在使用 BufferedWriter 将这些写入文件,但问题是我不太确定如何找到应该开始写入文件的位置。我目前正在尝试使用 BufferedReader 来确定下一行的写入位置,但我不确定我应该如何保存这个偏移量或任何东西,或者如何表示新行。
void createIds()
File writeId = new File("peopleIDs.txt");
try
FileReader fr = new FileReader(writeId);
BufferedReader in = new BufferedReader(fr);
FileWriter fw = new FileWriter(writeId);
BufferedWriter out = new BufferedWriter(fw);
String line;
while((line = in.readLine()) != null)
//How do I save where the last line of null is?
continue;
catch (IOException ex)
System.out.println(ex.getMessage());
【问题讨论】:
使用 append() 方法...它将数据附加到现有文件... 它会追加到新行吗?或者我该怎么做@TheLostMind 不确定您要做什么,您正在写入与正在阅读的文件相同的文件 - 对吗? @TheLostMindappend()
的行为与write().
完全相同。您的建议毫无意义。
@EJP - 他正在阅读所有行,直到他得到一个未写入的行。然后他试图在该行中写下他的 id ......基本上他正在尝试追加/把他的数据写在最后……我觉得是这样的……
【参考方案1】:
如果您只是想在文件末尾添加 ID,请使用以下 FileWriter
构造函数:
FileWriter fw = new FileWriter(writeId, true);
这会以附加模式打开FileWriter
,允许您将输出写入预先存在的文件。
如果您想将 ID 写入现有文件中的特定位置而不是仅写入末尾,我不确定在不先解析文件内容的情况下是否可行。
有关详细信息,请参阅FileWriter 的 JavaDoc。
【讨论】:
【参考方案2】:我们需要有关文件本身的更多信息:您要使用 BufferedReader 搜索什么?
如果文件是空的/新创建的,那么你根本不需要 BufferedReader。只需创建 PrintWriter 并保存您的号码。
我只是在这里猜测,但我认为真正的问题是您不确定如何生成随机数(因为这不会出现在您的示例代码中)。
下面是一些将随机数写入文本文件的示例代码:
import java.io.PrintWriter;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;
public class Example
public static void main(String[] args)
Random r;
PrintWriter writer;
r = new Random();
try
writer = new PrintWriter(new BufferedWriter(new FileWriter("Examplefile.txt")));
for (int i = 0; i < 10; i++)
writer.println(Integer.toString(r.nextInt(10)));
writer.close();
catch (IOException e)
【讨论】:
【参考方案3】:你可以的
try
PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(new File("abc.txt"),true)));
writer.append("test");
catch (IOException e)
e.printStackTrace();
【讨论】:
这与writer.write()
完全相同。如果要追加文件,则必须以追加模式打开文件(FileWriter
的两个参数构造函数)。
是的,你是对的,忘记了布尔标志。已编辑。以上是关于Java - 使用 BufferedWriter 和 BufferedReader,[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Java中的FileInputStream,FileOutputStram,BufferedWriter
Java BufferedWriter的flush()方法简介
Java-IO流之BufferedReader 和BufferedWriter的使用和原理