PrintStream
和之间有什么区别PrintWriter
?他们有许多共同的方法,因此我经常混合这两个类.而且,我认为我们可以将它们用于完全相同的事情.但必须有区别,否则,只会有一个班级.
我搜索了档案,但找不到这个问题.
我正在尝试理解PrintWriter我正在制作的一个小程序,我似乎无法让java生成该文件然后在其上写.当我执行下面的程序时,它在第9行给出了一个Filenotfoundexeption错误.它也无法在我指定的目录中生成该文件.我是新手,所以请尽量保持简单的答案.我正在使用Eclipse.
import java.io.PrintWriter;
import java.io.File;
public class Testing {
public static void main(String[] args) {
File file = new File ("C:/Users/Me/Desktop/directory/file.txt");
PrintWriter printWriter = new PrintWriter ("file.txt");
printWriter.println ("hello");
printWriter.close ();
}
}
Run Code Online (Sandbox Code Playgroud) 以下方法仅写出我添加的最新项目,它不会附加到以前的条目.我究竟做错了什么?
public void addNew() {
try {
PrintWriter pw = new PrintWriter(new File("persons.txt"));
int id = Integer.parseInt(jTextField.getText());
String name = jTextField1.getText();
String surname = jTextField2.getText();
Person p = new Person(id,name,surname);
pw.append(p.toString());
pw.append("sdf");
pw.close();
} catch (FileNotFoundException e) {...}
}
Run Code Online (Sandbox Code Playgroud) 如何PrintWriter
编写UTF-8?
pstream = new PrintWriter(csocket.getOutputStream(), true);
String res = "some string";
pstream.println(res); // here I want to output string as UTF-8
Run Code Online (Sandbox Code Playgroud) 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();
}
}
Run Code Online (Sandbox Code Playgroud) 好的,我正在学习I/O,我在其中一张幻灯片中找到了以下代码.有谁可以解释为什么需要有FileWrite,BufferedWriter和PrintWriter?我知道BufferedWriter是缓冲输出并将其全部放在一起,但为什么他们会使用FileWriter和PrintWriter?他们几乎没有做同样的错误处理等一点点差异?
还有他们为什么要传递bw
给他们PrintWriter
?
FileWriter fw = new FileWriter (file);
BufferedWriter bw = new BufferedWriter (fw);
PrintWriter outFile = new PrintWriter (bw);
Run Code Online (Sandbox Code Playgroud) 我正在使用JSP生成动态页面,我想将此动态生成的完整页面保存为文件存档.
在JSP中,所有内容都写入 PrintWriter out = response.getWriter();
在页面的末尾,在向客户端发送响应之前,我想要保存此页面,无论是在文件中还是在缓冲区中作为字符串,以便以后处理.
如何保存Printwriter
内容或转换为String
?
为了你的"重复"的狂热分子,对这样的权利类似的问题在这里.不同之处在于我画了一个生动的例子,我无法理解其输出.
对于文档的JspWriter和PrintWriter的说,有两点不同:1的JspWriter可以抛出异常,应该的PrintWriter不这样做.2. JspWriter在场景后面使用PrintWriter,但由于默认情况下JSP页面是缓冲的,因此直到the buffer is flushed
JSP页面上下文中的任何含义都不会创建PrintWriter .我不确定我是否理解了最后一部分.考虑这个JSP页面:
<%@page import="java.io.PrintWriter"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JspWriter versus PrintWriter</title>
</head>
<body>
<p>I should be row one.</p>
<%
out.println("<p>JspWriter said: I should be the second row.</p>");
PrintWriter pw = response.getWriter();
pw.println("<p>PrintWriter said: I should be the third row.</p>");
%>
<p>I should be the fourth row.</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
它产生以下输出:
PrintWriter said: I should be the third row. …
Run Code Online (Sandbox Code Playgroud) 如何在使用套接字连接创建的BufferedReader和PrintWriter上设置超时?这是我现在为服务器提供的代码,直到服务器或客户端崩溃为止:
while(isReceiving){
str = null;
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
while ((str = br.readLine()) != null){
System.out.println("Processing command " + str);
pw.println(client.message(str));
}
}
Run Code Online (Sandbox Code Playgroud)
在这段代码的范围之外,我已经施加了1000毫秒的套接字超时,它在等待初始连接时按预期工作.但程序阻塞在(str = br.readLine()).如果客户端挂起或崩溃,它永远不会停止阻止,除非我终止进程(即使这样也不总是有效).
有问题的客户端代码与此非常相似,并且以类似的方式阻塞.
在我的servlet中,我给了两个out.print
和out.write
.但两者都在浏览器中打印.
是什么这两个和何时使用之间的确切差异out.print
和out.write
?
printwriter ×10
java ×9
filewriter ×2
jsp ×2
servlets ×2
buffer ×1
io ×1
java-ee ×1
java1.4 ×1
output ×1
printstream ×1
sockets ×1
utf-8 ×1