printwriter用法_printwriter设置编码

printwriter用法_printwriter设置编码PrintWriter的使用java.io.PrintWriter具有自动行刷新的缓冲字符输出流,特点是可以按行写出字符串,并且可以自动行刷新。java.io.BufferedWriter是缓冲字符输出流,内部有缓冲区可以进行块写操作提供效率,而PrintWriter就是通过连接它实现的缓冲功能(PW的很多构造方法内部自动连接它)。PW支持两个直接对文件写操作的构造方法:*…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

PrintWriter的使用

java.io.PrintWriter

具有自动行刷新的缓冲字符输出流,特点是可以按行写出字符串,并且可以自动行刷新。

java.io.BufferedWriter是缓冲字符输出流,内部有缓冲区可以进行块写操作提供效率,

而PrintWriter就是通过连接它实现的缓冲功能(PW的很多构造方法内部自动连接它)。

PW支持两个直接对文件写操作的构造方法:
* PrintWriter(File f)传文件名
* PrintWriter(String s)传路径

以上两种方法都支持一个重载,就是再传入一个参数
* 允许我们制定写出字符时的字符集。

* PrintWriter给人一种可以直接对文件进行操作的假象
* PW是一个高级流
* 实际上PW包装了字节流、字符流和字符缓冲流。
* PW负责自动行刷新
* bw负责提高效率
* osw负责读字符
* fos负责写字节
* 最后PW能够按行很快地把一个字符串变成字节写在文件中

代码展示如下所示:



import java.io.IOException;
import java.io.PrintWriter;

/**
* java.io.PrintWriter
* 具有自动行
* @author 小明
*
*/
public class PWDemo {

public static void main(String[] args) throws IOException {
/**
* PW支持两个直接对文件写操作的构造方法:
* PrintWriter(File f)传文件名
* PrintWriter(String s)传路径
* PrintWriter给人一种可以直接对文件进行操作的假象
* PW是一个高级流
* 实际上PW包装了字节流、字符流和字符缓冲流。
* PW负责自动行刷新
* bw负责提高效率
* osw负责读字符
* fos负责写字节
* 最后PW能够按行很快地把一个字符串变成字节写在文件中
*/

PrintWriter pw = new PrintWriter("pw.txt");

pw.println("飞雪连天射白鹿");
pw.println("金庸小说我都爱看");
System.out.println("写出完毕!");
pw.close();
}
}




import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;

public class PWDemo2 {

public static void main(String[] args) throws IOException {
/**
* 使用流连接形式向文件中写出字符串
*/
//    FileOutputStream fos = new FileOutputStream("pw2.txt");
//    
//    OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
//    
//    BufferedWriter bw = new BufferedWriter(osw);
//    
//    PrintWriter pw = new PrintWriter(bw);

PrintWriter pw = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("pw2.txt")
, "UTF-8")
)
);

pw.println("你好");
pw.println("我不好");
pw.close();

}

}


缓冲字符流中所有构造方法中第一个参数都是Reader或Writer对象。

代码展示如下所示:
PrintWriter创建时如果有参数true时,会有行刷新。PrintWriter调用println()方法有行刷新。

当创建PW时第一个参数为一个流时,
* 那么久可以再传入一个boolean值类型的参数,
* 若该值为true,那么当前PW久具有自动行刷新的功能,
* 即:每当使用println方法写出一行字符串后就会自动调用flush
* 注:使用自动行刷新可以提高写出数据的即时性,
* 但是由于会提高写出次数,必然会导致写效率降低。



package io;

import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Scanner;

/**
* 完成简易记事本功能
* 程序启动后要求输入文件名,然后对该文件写操作。
* 之后输入的每一行字符串都按行写入到该文件中。
* 当输入“exit"是程序退出。
* 
* 使用PW完成该功能,并且自行使用流连接完成。
* 
* @author 小明
*
*/
public class Note {
public static void main(String[] args) throws IOException, FileNotFoundException{
Scanner reader = new Scanner(System.in);
System.out.println("请输入文件名:");
String filename = reader.nextLine();

PrintWriter pw = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(filename),"UTF-8"
)
),true
);
System.out.println("请开始输入内容");
while(true)
{
String line = reader.nextLine();
/**
* 当创建PW时第一个参数为一个流时,
* 那么久可以再传入一个boolean值类型的参数,
* 若该值为true,那么当前PW久具有自动行刷新的功能,
* 即:每当使用println方法写出一行字符串后就会自动调用flush
* 注:使用自动行刷新可以提高写出数据的即时性,
* 但是由于会提高写出次数,必然会导致写效率降低。
*/
if("exit".equals(line))
{
break;
}
//pw.write(line);
pw.println(line);
//pw.flush();
}
pw.close();
System.out.println("谢谢输入");
}

}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169274.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【ztree系列】树节点的模糊查询

    【ztree系列】树节点的模糊查询以前设计模糊查询的功能,一般都是针对表格来做的,还真没考虑过对tree进行模糊查询,也可能是因为遇到的数据量还没到头疼的程度吧。为了完美的实现模糊查询的效果,搞了半天css,对输入框显示效果的设置更是修改了n多次,什么半圆角、边框、光影。。。真佩服我这颗屡试屡换的小心脏啊一、页面设计对于搜索功能,首先要有输入框,用于接收输入内容;然后就是显示搜索结果用的标签,控制焦点用的上移下动按钮。其实

    2022年5月29日
    299
  • Pycharm的python interpreter选择「建议收藏」

    Pycharm的python interpreter选择「建议收藏」初学python时我在电脑装idle,装上了ANACONDA,也裸装了python3.9(也就是说我电脑上有两个独立的python,一个是python3.9,另一个是装在Anaconda里面的python3.7。在我装上Pycharm后,Pycharm自动使用Anaconda提供的环境,虽然Anaconda的包很全,但还是有缺少的包,当我使用pip命令安装需要的包时,确自动安装到了python3.9的安装目录下,而且命令行运行python时只运行python3.9而不是Anaconda里面的python

    2022年8月27日
    7
  • 2011年1月31日nod32id,nod32免费激活码_NOD32用户名密码

    2011年1月31日nod32id,nod32免费激活码_NOD32用户名密码
    用户名:EAV-40746393密码:f77rk82e7n(适用类型ESS/EAV)

    用户名:EAV-40746397密码:uj7javkt8c(适用类型ESS/EAV)

    用户名:EAV-40899369密码:bsfrudfene(适用类型ESS/EAV)

    用户名:EAV-40898530密码:mpju75r5u7(适用类型ESS/EAV)

    用户名:EAV-40746391密码:aj7urdnr6

    2022年6月16日
    57
  • 计算机维修技术在线阅读,西南大学19秋[0240] 计算机维修技术在线作业

    计算机维修技术在线阅读,西南大学19秋[0240] 计算机维修技术在线作业0240计算机维修技术9A’Op*F2E1.[单选题]评定主板的性能首先要看()。:O$|(q$E’u奥鹏作业答案可以联系QQ761296021+e:|*z)D8i7OA.C.CPU”W”l.}0Z)U$z,J(hB.内存8x&U$e”[0i.zC.主板结构9I/\(k)s:J’G7l/UD.主芯片组!…

    2022年5月30日
    168
  • java 0xff00_& 0xFF 与 & 0xFF00 的作用

    java 0xff00_& 0xFF 与 & 0xFF00 的作用c[i]=(char)(b[i]&0xff)(b[i]为byte型,c[i]为char型)觉得与一下0xff没什么用。直接c[i]=(char)b[i]有何异?如:((WORD)((((WORD)(wData)>>8)&0xff)|(((WORD)(wData)<<8)&0xff00)))charc=(ch…

    2022年6月19日
    39
  • 高性能微服务网关.NETCore客户端Kong.Net开源发布

    高性能微服务网关.NETCore客户端Kong.Net开源发布前言项目地址:https://github.com/lianggx/Kong.Net你的支持使我们更加强大,请单击star让更多的.NETCore认识它。拥抱开源的脚步,我们从来都是一直

    2022年7月2日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号