public static void main(String[] args) {

try {int s = 0;
InputStreamReader isr= new InputStreamReader(System.in);
OutputStreamWriter osw = new OutputStreamWriter(
new FileOutputStream("D:\\作业\\pppppppp.java",true));

while((s = isr.read())!= -1){
osw.write(s);
osw.flush();
}
System.out.println(osw.getEncoding());
osw.close();
} catch (FileNotFoundException e) {
System.out.println("文件不能被发现");
e.printStackTrace();
} catch (IOException e) {
System.out.println("文件写入错误");
e.printStackTrace();
}
}}
这个程序的osw.flush()为什么必须要有才能在生成的文件中写出来.难到是从键盘键入的还放在内存的缓冲区吗?
我觉得应该没缓冲区啊!
请高手解决一下
另外有没有高手知道引号的正则表达式怎么写,请指点,谢谢!

解决方案 »

  1.   

    OutputStreamWriter 这个流是带缓冲区的,每次调用 write() 方法都会导致在给定字符(或字符集)上调用编码转换器。在写入底层输出流之前,得到的这些字节将在缓冲区中累积
    引号的正则表达式??
    "直接写不就可以吗,引号也不是元字符
      

  2.   

    谢谢你上面的回答
    关于那正则表达式用引号真不行
    我感觉它好象会与字符串的引号相混淆
    Pattern p4 = Pattern.compile("["]");
    这句代码会报错