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("谢谢输入");
}

}

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • request.setAttribute和session.setAttribute的区别「建议收藏」

    request.setAttribute和session.setAttribute的区别「建议收藏」1.request.setAttributerequest.setAttribute作用域是请求和被请求页面之间,只在此action的下一个forward需要使用时候调用;request.setAttribute()可存放的参数是String和Object。req.setAttribute(“maps”,maps);//请求转发,携带数据,req存储数据req.getRequestDispatcher(“/user.jsp”).forward(req,resp);2、session.setA

    2022年10月17日
  • String字符串截取几种方法

    String字符串截取几种方法String截取字符串publicstaticvoidmain(String[]args){ Stringa="abcd-efg"; Stringa1=a.substring(a.lastIndexOf("-")+1); Stringa2=a.substring(0,a.indexOf("-")); System.out.println(a1);//efg …

  • 数据库同步工具:ETL使用说明

    数据库同步工具:ETL使用说明1        打开ETL工具2        转换从数据库的表导出数据到另一个数据库的表。前提:两个数据库的表格结构相同2.1      新建转换文件->新建->转换2.2      配置输入2.2.1      拖动表输入到编辑界面输入:需要导出数据的数据库表格。在左侧导航栏里面,找到【输入】->【表输入】,如下图:将【表输入】拖动到编

  • 分布式锁—-数据库和redis实现分布式锁

    分布式锁—-数据库和redis实现分布式锁

  • mongodb 集合_mongodb原理

    mongodb 集合_mongodb原理最近公司用MongoDB,整合一下网上的优缺点,学习下MongoDB没有找到原作者一:MongoDB的优点和缺点优点面向文档存储(类JSON数据模式简单而强大) 动态查询 全索引支持,扩展到内部对象和内嵌数组 查询记录分析 快速,就地更新 高效存储二进制大对象(比如照片和视频) 复制和故障切换支持 Auto-Sh…

    2022年10月30日
  • netty拆包_http粘包

    netty拆包_http粘包Netty粘包/半包原理与拆包实战(史上最全)疯狂创客圈Java聊天程序【亿级流量】实战系列之13【博客园总入口】本文的源码工程:Netty粘包/半包原理与拆包实战源码本实例是《Netty粘包/半包原理与拆包实战》一文的源代码工程。写在前面大家好,我是作者尼恩。为了完成了一个高性能的Java聊天程序,在前面的文章中,尼恩已经再一次的进行了通讯协议的重新…

发表回复

您的电子邮箱地址不会被公开。

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