当前位置: 首页 > 知识库问答 >
问题:

将一个PrintWriter与另一个PrintWriter进行比较

归俊杰
2023-03-14

我有两位版画作家:

PrintWriter pw1 = new PrintWriter("testPrint.txt");
PrintWriter pw2 = new PrintWriter("testPrint.txt");

我想检查他们是否都打印到同一个文件,但与

pw1.equals(pw2)

或者

Objects.equals(pw1, pw2)

没用。此外,我希望能够检查打印作者是否像这两位一样打印到同一个位置,而不是带有文件路径的字符串:

PrintWriter pw1 = new PrintWriter(System.out, true);
PrintWriter pw2 = new PrintWriter(System.out, true);

有办法吗?

共有2个答案

易研
2023-03-14

从外部无法检查PrintWriter的底层流。有一个out成员变量,但它是一个受保护的属性,只能由子类访问。

protected Writer out

这个PrintWriter的基础字符输出流。

即使你可以访问这个领域,但它仍然不像比较两个实例那么容易。两个潜在的书写者可能是写在同一个地方的不同对象。这正是使用第一个示例中的PrintWriter(String)构造函数时会发生的情况:

package java.io;

public class PrintWriter extends Writer {
    // ...

    public PrintWriter(String fileName) throws FileNotFoundException {
        this(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName))),
             false);
    }

    // ...
}

它将创建两个BufferedWriters,这将指向不同的OutputStreamWriters,这将指向不同的FileOutputStreams。这是海龟一路下降。

裴学
2023-03-14

不,不是你写的两位印刷作家写的。总的来说,两个作者在同一个目的地写作是一个你应该避免的问题。相反,如果希望多个源写入同一个文件,请使用一个PrintWriter和一个要写入的消息队列。

您可能还想签出可以锁定的FileChannel。请参阅:我们可以同时打开同一文件的多个FileWriter流吗?

 类似资料:
  • 问题内容: 我需要比较两个缓冲图像,看它们是否完全相同。只是说那等于是行不通的。我目前的方法是 但这并不能真正起作用。还有什么其他更可靠的方法? 问题答案: 显而易见的解决方案是逐像素比较它们是否相同。

  • 问题内容: 我有以下代码将字符串(从ResultSet)打印到文本文件: 我在写语句中放置了一个“ \ n”,希望它将每行打印在不同的行上,但是失败了。txt文件当前像这样打印出来,其中row#是ResultSet中的另一行: row1row2row3row4row5 我希望它像这样打印出来: 第1行 第2行 第3行 第4行 第5行 … 问题答案: 您应该使用在每行之后打印换行符:

  • 我有以下代码将字符串(从结果集)打印到文本文件: 我在write语句中加了一个“\n”,希望它能在不同的行上打印每一行,但失败了。txt文件当前按此方式打印,结果集中的第#行是另一行: Rrow1row2row3row4row5 我想把它打印出来,比如: 第1行 行2 行3 行4 行5 ...

  • 我有一个类赋值,我需要将一个目标排序到一个二叉树节点中,给定一个根,我需要将它与根进行比较,如果目标小于根的值,则将目标作为左子,或者如果目标大于根的值,则将目标作为右子。 我必须使用给定的方法头和参数,我的代码是这样编写的: 返回以下错误: java:109:错误:二进制运算符“<”的操作数类型不正确 我还尝试了compareTo方法,通过尝试类似于 返回以下错误: binarySearchTr

  • 问题内容: 我是Java的新手,为了实践起见,我试图创建一个十六进制到十进制的数字转换器,因为我已经成功地制作了一个二进制到十进制的转换器。 我遇到的问题基本上是将一个字符串中的给定字符与另一个字符串进行比较。这就是我定义要比较的当前字符的方式: 这是我尝试比较角色的方法: 当我尝试通过仅输入数字(例如12)来运行代码时,它可以工作,但是当我尝试使用“ b”时,会出现一个奇怪的错误。这是运行程序的

  • 我对c语言不太精通,我对 逐个字符遍历char* 正确比较单个字符和另一个字符 给定一个类似“abcda”的字符串,我想计算“a”的数量并返回计数 我也不应该使用strlen() 如何正确地一次比较一个字符?