java中servlet中printwriter的print方法是干什么的
java中servlet中printwriter的print方法是用来将Servlet中的数据直接输出到客户端上的。
java中servlet中printwriter的print方法可以将数据按照原来的格式原样输出,其中write也可以输出数据,但是write只写最低8位。
Java中printWriter()的作用是什么
PrintWriter()的作用是为了定义流输出的位置,并且此流可以正常的存储中文,减少乱码输出。举例:
PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(“d:/text.txt“), “utf-8“));//定义输出流位置,并且文件必须存在
out.println(“中文测试“);//写入内容
out.close();//关闭流
备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。
为什么java中使用printWriter无法写入到txt文档
import java.io.*;
import java.util.*;
public class TestPrintWriter {
public static void main(String args)throws IOException {
File file=new File(“temp2.txt“);
if(file.exists()){
System.out.println(“File temp.txt already exists.“);
System.exit(0);
}
PrintWriter output=new PrintWriter(new FileWriter(file));
for(int i=0;i《10;i++){
output.print((int)(Math.random()*100)+“ “);
}
output.close();
BufferedReader input=new BufferedReader(new FileReader(“temp2.txt“));
int total=0;
String line;
while((line=input.readLine())!=null){
StringTokenizer tokens=new StringTokenizer(line);
while(tokens.hasMoreTokens())
total+=Integer.parseInt(tokens.nextToken());
}
output=new PrintWriter(new FileWriter(file,true));
output.printf(“\n\n“);
output.printf(“Total is %d “,total);
output.close();
}
}
运行后,temp2.txt的内容:
85 10 92 59 71 87 2 95 31 73
Total is 605
java 输出流中的PrintStream 和 PrintWriter有什么区别
,好像很多场合都能混用
比如用于网络间通信,发送消息时,可用PrintStream 也可用 PrintWriter
eg:
Socket client;
PrintStream output = new PrintStream(client.getOutputStream());
output.println(“aaa“);
output.flush();
把上例中的 PrintStream 换成 PrintWriter效果是一样的。Java I/O流分为两类,字节流和字符流。字节流是指InputStream/OutputStream及其子类,字符流是指Reader/Writer及其子类。这两类I/O流的class hierarchy基本上是对等的,InputStreamReader/OutputStreamWriter是InputStream/OutputStream和Reader/Writer之间的桥梁。PrintStream是OutputStream的子类,PrintWriter是Writer的子类,两者处于对等的位置上,所以它们的API是非常相似的。PrintWriter实现了PritnStream的所有print方法。对于PrintStream,所有println方法都在内部调用相应的print方法,比如println(char x)的方法体就是调用print(x);再写入一个平台相关的换行符。PrintStream构建时会在内部new一个BufferedWriter,所有print方法都在内部调用这个Writer的write方法(write(String)或write(char))――对于print(char),直接调用write(char);对于其他的print方法,先用String.valueOf获得参数的字符串表示,然后调用write(String)。
对于PrintWriter,所有println方法也都在内部调用print方法,print方法调用write方法。传入OutputStream时,PrintWriter会在内部构造一个BufferedWriter;而传入Writer时,PrintStream内部直接使用该Writer,此时PrintWriter是否进行了缓冲全看该Writer。
但是,PrintStream是字节流,它有处理raw byte的方法,write(int)和write(byte,int,int);PrintWriter是字符流,它没有处理raw byte的方法。PrintStream和PrintWriter的auto flushing机制有点不同,前者在输出byte数组、调用println方法、输出换行符或者byte值10(即\n)时自动调用flush方法,后者仅在调用println方法时发生auto flushing。System.out是PrintStream。
PrintWriter中write方法和print方法的区别
其实真正的说来是没有什么区别的。
来看看print方法是如何写的。抽出一个原代码方法来看看。
public void print(boolean b) {
write(b ? “true“ : “false“);
}
实际上调用了write方法。跟我们去直接调用是一样的。
只不过print方法提供了多种数据类型,而write都通过转换,大多数变为字符串输出了。
PrintWriter,自动行刷新是什么意思
再没有刷新前,你写入的数据并没有真正写入文件,只是保存在内存中。刷新后才会写入文件,如果程序中没有调用刷新方法,当程序执行完时会自动刷新,也就是只有到数据全部执行完才会一次性写入,大数据量时对运行效率有影响。
创建不具有自动行刷新的对象,就是用这个对象写入数据时不会自动刷新。
PrintWriter和BufferedWriter的区别
BufferedWriter是带有缓冲区的字符写入流,但是没有自动换行功能,必须手动加。
PrintWriter带有自动换行,而且支持直接发送,比如构造方法设置为new PrintWriter(xx,ture);这样设置对方可以直接读取,而不需要增加手动换行。
printwriter flush()是干嘛的
flush()直面意思就是刷新printwriter流的缓冲区。
printwriter流如果和文件流(如Stream和Reader流)一起使用的话,printwriter流首先是把程序中数据写入内存缓冲区,然后再由文件流写入文件。如果不刷新缓冲区的话,就一直暂用内存资源。