Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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中的PrintWriter与FileWriter_Java_Filewriter_Printwriter - Fatal编程技术网

Java中的PrintWriter与FileWriter

Java中的PrintWriter与FileWriter,java,filewriter,printwriter,Java,Filewriter,Printwriter,Java中的PrintWriter和FileWriter是相同的吗?不管使用哪一个?到目前为止,我已经使用了这两种方法,因为它们的结果是相同的。在某些特殊情况下,选择其中一个比另一个更有意义吗 public static void main(String[] args) { File fpw = new File("printwriter.txt"); File fwp = new File("filewriter.txt"); try { PrintW

Java中的PrintWriter和FileWriter是相同的吗?不管使用哪一个?到目前为止,我已经使用了这两种方法,因为它们的结果是相同的。在某些特殊情况下,选择其中一个比另一个更有意义吗

public static void main(String[] args) {

    File fpw = new File("printwriter.txt");
    File fwp = new File("filewriter.txt");
    try {
        PrintWriter pw = new PrintWriter(fpw);
        FileWriter fw = new FileWriter(fwp);
        pw.write("printwriter text\r\n");
        fw.write("filewriter text\r\n");
        pw.close();
        fw.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

两者都在内部使用
FileOutputStream

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



public FileWriter(File file) throws IOException {
super(new FileOutputStream(file));
}
但主要区别在于PrintWriter提供了特殊的方法:

打印的格式表示形式 对象到文本输出流。这 类实现所有的打印 在PrintStream中找到的方法。是的 不包含写入原始数据的方法 字节,程序应使用这些字节 未编码字节流

与PrintStream类不同,如果 启用自动冲洗后,它将 仅当其中一个println, 调用printf或format方法, 而不是每当一条新线 字符恰好被输出。这些 方法使用平台自己的概念 使用行分隔符而不是 换行符


PrintWriter
具有不同的错误处理概念。您需要调用
checkError()
而不是使用try/catch块。

PrintWriter
不会抛出
IOException
。为此,您应该调用
checkError()
方法。

Java5+中的
java.io.PrintWriter
允许一个方便的方法/构造函数写入文件。 来自Javadoc


使用指定的文件创建新的PrintWriter,无需自动换行。这个方便的构造函数创建了必要的中间OutputStreamWriter,它将使用Java虚拟机实例的默认字符集对字符进行编码

根据coderanch.com,如果我们将这些答案结合起来,我们会得到:

FileWriter是IO的字符表示形式。这意味着它可以用来写字符。在内部,FileWriter将使用底层操作系统的默认字符集,并将字符转换为字节,然后将其写入磁盘

PrintWriter和FileWriter

相似性

  • 两者都是从作者那里延伸出来的
  • 两者都是字符表示类,这意味着它们使用字符并使用默认字符集将其转换为字节
  • 分歧

  • FileWriter在任何IO失败的情况下抛出IOException,这是一个已检查的异常
  • 没有一个PrintWriter方法抛出IOException,而是设置了一个布尔标志,可以使用checkError()获得该标志
  • PrintWriter有一个可选构造函数,可用于在调用特定方法时启用自动刷新。FileWriter中不存在此类选项
  • 当写入文件时,FileWriter有一个可选的构造函数,它允许在调用“write()”方法时将其追加到现有文件中
  • PrintStream和OutputStream的区别:与上面的解释类似,只需将字符替换为字节

    PrintWriter具有以下方法:

    close()
    flush()
    format()
    printf()
    print()
    println()
    write()
    
    close()
    flush()
    write()
    
    施工人员包括:

    File (as of Java 5)
    String (as of Java 5)
    OutputStream
    Writer
    
    File
    String 
    
    而FileWriter具有以下方法:

    close()
    flush()
    format()
    printf()
    print()
    println()
    write()
    
    close()
    flush()
    write()
    
    施工人员包括:

    File (as of Java 5)
    String (as of Java 5)
    OutputStream
    Writer
    
    File
    String 
    

    链接:

    仅提供有关刷新和关闭FileOutputStream的方法的更多信息

    flush()---只需确保所有缓冲数据都被完全刷新写入磁盘,并准备好之后再次写入流(或写入器)


    close()----刷新数据并关闭任何文件句柄、套接字或任何东西。现在连接已丢失,您无法将任何内容写入outputStream。

    事实上,java.io.FileWriter依赖于平台的默认字符编码,这对我来说毫无用处。你永远不应该假设你的应用程序将部署在什么样的环境中。

    好吧,他们有不同的方法,做不同的事情。你读过每一本的javadoc吗?只要记住在关闭()之前刷新()。关闭可以确保刷新。@Bozho:老实说,我以为Koekiebox在制造微妙的浴室幽默。这里总是欢迎严肃的geekery…但偶尔听到这么多评论就咯咯笑是很好的。:)一个质量很差的回答。”FileWriter是I/O的字符表示形式,没有意义。所有作家都写人物。FileWriter写入文件。PrintWriter写入嵌套写入程序,该写入程序可以是文件写入程序。我当前有一个PrintWriter抛出IOException。PrintWriter仅在您写入文件时使用FileOutputStream。@EJP我从未说过其他。但这个问题是在编写文件的背景下提出的