本篇文章给大家谈谈关闭BufferedReader和System.in,以及bufferedreader需不需要关闭的知识点,同时本文还将给你拓展BufferedBeader和BufferedWrit
本篇文章给大家谈谈关闭BufferedReader和System.in,以及bufferedreader需不需要关闭的知识点,同时本文还将给你拓展BufferedBeader和BufferedWriter、BufferedReader 和BufferedWriter、BufferedReader/BufferedWriter 替换 xml 文档下载成 word 文档、BufferedReader和BufferedInputStream之间的区别等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- 关闭BufferedReader和System.in(bufferedreader需不需要关闭)
- BufferedBeader和BufferedWriter
- BufferedReader 和BufferedWriter
- BufferedReader/BufferedWriter 替换 xml 文档下载成 word 文档
- BufferedReader和BufferedInputStream之间的区别
关闭BufferedReader和System.in(bufferedreader需不需要关闭)
Reader rdr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(rdr);String s;s = br.readLine();br.close();Scanner sc = new Scanner(System.in);s = sc.nextLine();System.out.print(s);
我注意到,如果关闭BufferedReader
,我将无法再从键盘插入输入,因为System.in
已经关闭了。无论如何,我可以保留br.close()
(删除文件时需要它),然后从键盘添加更多输入吗?
答案1
小编典典看起来您需要:
http://commons.apache.org/io/apidocs/org/apache/commons/io/input/CloseShieldInputStream.html
在制作读者之前,先将System.in环绕起来,然后一切都会好起来的,因为使用FileInputStream时不会这样做。
BufferedBeader和BufferedWriter
package cn.file;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Student {
public static void main(String[] args) {
String content[]={"好久不见","最近好吗","常联系"};
File file =new File("f://wordl.txt");
FileWriter fw;
try {
fw = new FileWriter(file);
BufferedWriter bufw =new BufferedWriter(fw);
for(int k=0;k<content.length;k++){
bufw.write(content[k]);
bufw.newLine();
}
bufw.close();
fw.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
FileReader fr=new FileReader(file);
BufferedReader bufr=new BufferedReader(fr);
String s=null;
int i=0;
while((s=bufr.readLine())!=null){
i++;
System.out.println("第"+i+"行:"+s);
}
bufr.close();
fr.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
BufferedReader 和BufferedWriter
1、BufferedReader
从输入字符流中读取文本,缓冲各个字符,从而实现字符,数组和行的读取。
构造函数 BuffferedReader(reader)
reader 为InputStreamReader.它是安装指定的编码(如GBK)将二进制流转换为字符流。
构造函数
InputStreamReader(InputStream in) Creates an InputStreamReader that uses the default charset. |
InputStreamReader(InputStream in, Charset cs) Creates an InputStreamReader that uses the given charset. |
InputStreamReader(InputStream in, CharsetDecoder dec) Creates an InputStreamReader that uses the given charset decoder. |
InputStreamReader(InputStream in, String charsetName) Creates an InputStreamReader that uses the named charset. |
2、BufferedWriter
输入流:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入
构造函数 BufferedWriter(Writer out)
Writer子类
BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter
BufferedReader/BufferedWriter 替换 xml 文档下载成 word 文档
public static String create(File filedoc , Map<String,String> map , boolean bflag , String filename , String path,HttpServletResponse response){try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filedoc),"utf-8"));
response.setContentType("application/x-msdownload;");
response.addHeader("Content-disposition", "inline; filename=myword.doc");
BufferedWriter bw = new BufferedWriter (new OutputStreamWriter (response.getOutputStream (),"utf-8"));// 设置 utf-8 输出流字符集,编码,不设置就会有乱码
// BufferedWriter bw = new BufferedWriter (new OutputStreamWriter (new FileOutputStream (path + "/" +StringUtils.getText (map.get ("eventCompanyName"))+filename +".doc"),"utf-8"));//struts 文档下载去配置文件里配置就 ok 了
String line = "";
StringBuilder strBuil = new StringBuilder();
while((line = br.readLine()) != null){
for(Map.Entry<String, String> entry: map.entrySet()) {
if (line.contains (">"+entry.getKey ()) || line.contains (">("+entry.getKey ())){//35 个汉字一行
String getKey = entry.getKey().toString();
String getValue = map.get(getKey).toString();
strBuil.append (line.replace (entry.getKey (), map.get (entry.getKey ()))).append ("\n");// 做个替换字符
//strBuil.append (line.replace (entry.getKey (), map.get (entry.getKey ()).replace ("\n", "</w:t></w:r></w:p><w:p><w:pPr><w:spacing w:line=\"480\"w:line-rule=\"auto\"/><w:ind w:first-line-chars=\"200\"/><w:rPr><w:rFonts w:ascii=\" 仿宋_GB2312\"w:fareast=\" 仿宋_GB2312\"w:h-ansi=\" 宋体 \"w:hint=\"fareast\"/><wx:font wx:val=\" 仿宋_GB2312\"/><w:sz w:val=\"24\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\" 仿宋_GB2312\"w:fareast=\" 仿宋_GB2312\"w:h-ansi=\" 宋体 \"w:hint=\"fareast\"/><wx:font wx:val=\" 仿宋_GB2312\"/><w:sz w:val=\"24\"/></w:rPr><w:t>"))).append ("\n");
//word 文档中存在如下内容
//w:val="24" /><w:lang w:val="EN-US" w:fareast="ZH-CN" w:bidi="AR-SA" /></w:rPr></w:style><w:style
// 当 map 中含有 key 值为 area 时出现 BUG
// 所以判断条件由 line.contains (entry.getKey ()) 改为 line.contains (">"+entry.getKey ())
//word 中 xml 加下划线的换行为 </w:t></w:r></w:p><w:p><w:pPr><w:wordWrap w:val=\"off\"/><w:rPr><w:rFonts w:fareast=\"仿宋_GB2312\"/><w:sz w:val=\"24\"/><w:u w:val=\"single\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:fareast=\"仿宋_GB2312\" w:hint=\"fareast\"/><wx:font wx:val=\"仿宋_GB2312\"/><w:sz w:val=\"24\"/><w:u w:val=\"single\"/></w:rPr><w:t>
bflag = true;
}else{
continue;
}
}
if(bflag == false){
strBuil.append(line).append("\n");
}
bflag = false;
}
bw.write(strBuil.toString());
System.out.println(strBuil.toString());
String docPath =StringUtils.getText (map.get ("eventCompanyName"))+filename + ".doc";// 下载文件
br.close();
bw.close();
return docPath;
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
BufferedReader和BufferedInputStream之间的区别
之间有什么区别BufferedReader
,BufferedInputStream
并Scanner
在Java?BufferedReader
阅读文本并BufferedInputStream
阅读byte
。除此之外有什么区别吗?
我们今天的关于关闭BufferedReader和System.in和bufferedreader需不需要关闭的分享已经告一段落,感谢您的关注,如果您想了解更多关于BufferedBeader和BufferedWriter、BufferedReader 和BufferedWriter、BufferedReader/BufferedWriter 替换 xml 文档下载成 word 文档、BufferedReader和BufferedInputStream之间的区别的相关信息,请在本站查询。
本文标签: