importjava.io.*;classFileWriterDemo{publicstaticvoidmain(String[]args)throwsIOException{//创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。//而且该文件会被创建到指定下。如果该目录下已有同名文件,将被覆盖//其实该步就是在明确数据要存放的目的地。FileWriterfw=newFileWriter("demo.txt");//调用write方法,将字符串写入到流中。fw.write("abcde");//刷新流对象的缓冲中的数据。//将数据刷到目的地中。//fw.flush();//关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据//将数据刷到目的地中//和flush的区别:flush刷新后,流可以继续使用,流可以继续使用,//close刷新后,会将流关闭fw.close();fw.write("haha");}}
/*IO异常的处理方式。*/importjava.io.*;classFileWriterDemo2{publicstaticvoidmain(String[]args){FileWriterfw=null;try{fw=newFileWriter("demo.txt");fw.write("abcdefg");}catch(IOExceptione){System.out.println("catch:"+e.toString());}finally{try{//如果创建成功才需要关闭if(fw!=null)fw.close();}catch(IOExceptione){System.out.println(e.toString());}}}}
//传递一个true参数,代表不覆盖已有的文件。并在已有文件的末尾处进行数据续写。FileWriterfw=newFileWriter("demo.txt",true);
/*第二种方式:通过字符数组进行读取*/importjava.io.*;classFileReaderDemo2{publicstaticvoidmain(String[]args)throwsIOException{FileReaderfr=newFileReader("demo.txt");//定义一个字符数组。用于存储读到的字符//该read(char[])返回的是读到的字符个数char[]buf=newchar[3];intnum=0;while((num=fr.read(buf))!=-1){System.out.print(newString(buf,0,num));}System.out.println();/*intnum=fr.read(buf);System.out.println("num="+num+"..."+newString(buf,0));intnum2=fr.read(buf);System.out.println("num="+num2+"..."+newString(buf,0));*/fr.close();}}
//读取一个.java文件,并打印在控制台上importjava.io.*;classFileReaderTest{publicstaticvoidmain(String[]args)throwsIOException{FileReaderfr=newFileReader("DateDemo.java");char[]buf=newchar[1024];intnum=0;while((num=fr.read(buf))!=-1){System.out.print(newString(buf,0,num));//注意不用换行}fr.close();}}
//将C盘一个文本文件复制到D盘/*复制的原理:*其实就是将C盘下的文件数据存储到D盘的一个文件中**步骤:*1.在D盘创建一个文件。用于存储C盘文件中的数据。*2.定义读取流和C盘文件关联。*3.通过不断地读写完成数据存储。*//fw.write(buf,0,len);**/importjava.io.*;classCopyText{publicstaticvoidmain(String[]args){copy_2();}//第一种方法//从C盘读一个字符就往D盘写一个字符publicstaticvoidcopy_1()throwsIOException{//创建目的地FileWriterfw=newFileWriter("RunTimeDemo_copy.txt");//与已有文件关联FileReaderfr=newFileReader("RunTimeDemo.java");intch=0;while((ch=fr.read())!=-1){fw.write(ch);}fw.close();fr.close();}//第二种//publicstaticvoidcopy_2(){FileWriterfw=null;FileReaderfr=null;try{fw=newFileWriter("SystemDemo_copy.txt");fr=newFileReader("SystemDemo.java");char[]buf=newchar[1024];intlen=0;while((len=fr.read(buf))!=-1){fw.write(buf,0,len);}}catch(IOExceptione){thrownewRuntimeException("读写失败");}finally{if(fr!=null){try{fr.close();}catch(IOExceptione){}}if(fw!=null){try{fw.close();}catch(IOExceptione){}}}}}
/**缓冲区的出现是为了提高流的操作效果而出现的。*所以在创建缓冲区之前,必须要先有流对象。*该缓冲区中提供了一个跨平台的换行符newLine()方法**/importjava.io.*;classBufferedWriterDemo{publicstaticvoidmain(String[]args)throwsIOException{//创建一个字符写入流对象FileWriterfw=newFileWriter("buf.txt");//为了提高字符写入流效率,加入了缓冲技术。//只要将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可。BufferedWriterbufw=newBufferedWriter(fw);bufw.write("abc\r\ndef");for(inti=1;i<5;i++){bufw.write("abcd"+i);bufw.newLine();//跨平台bufw.flush();//写一次刷新一次}//记住,只要用到缓冲区,就要记得刷新bufw.flush();//其实关闭缓冲区,就是在关闭缓冲区中的流对象。bufw.close();}}
/**明白了BufferedReader类中持有方法readLine的原理后,*可以自定义一个类中包含一个功能和readLine一致的方法*来模拟一下BufferedReader***/importjava.io.*;classMyBufferedReader{privateFileReaderr;MyBufferedReader(FileReaderr){this.r=r;}//可以一次读一行数据的方法publicStringmyReadLine()throwsIOException{//定义一个临时容器,原BufferReader封装的是字符数组//为了演示方便,定义一个StringBuilder容器。因为最终还是要将数据变成字符串。StringBuildersb=newStringBuilder();intch=0;while((ch=r.read())!=-1){if(ch=='\r')continue;elseif(ch=='\n')returnsb.toString();elsesb.append((char)ch);}if(sb.length()!=0){returnsb.toString();}returnnull;}publicvoidmyClose()throwsIOException{r.close();}}classMyBufferedReaderDemo{publicstaticvoidmain(String[]args)throwsIOException{FileReaderfr=newFileReader("buf.txt");MyBufferedReadermyBuf=newMyBufferedReader(fr);Stringline=null;while((line=myBuf.myReadLine())!=null){System.out.println(line);}myBuf.myClose();}}
/**装饰设计模式:***/classPerson{publicvoidchifan(){System.out.println("吃饭");}}classSuperPerson{privatePersonp;SuperPerson(Personp){this.p=p;}publicvoidsuperChifan(){System.out.println("开胃汤");p.chifan();System.out.println("甜点");}}classPersonDemo{publicstaticvoidmain(String[]args){Personp=newPerson();//p.chifan();SuperPersonsp=newSuperPerson(p);sp.superChifan();}}
importjava.io.*;classLineNumberReaderDemo{publicstaticvoidmain(String[]args)throwsIOException{FileReaderfr=newFileReader("PersonDemo.java");LineNumberReaderlnr=newLineNumberReader(fr);Stringline=null;lnr.setLineNumber(100);while((line=lnr.readLine())!=null){System.out.println(lnr.getLineNumber()+":"+line);}lnr.close();}}
importjava.io.*;classFileStream{publicstaticvoidmain(String[]args)throwsIOException{readFile_3();}publicstaticvoidreadFile_3()throwsIOException{FileInputStreamfis=newFileInputStream("fos.txt");//intnum=fis.available();byte[]buf=newbyte[fis.available()];//定义一个刚刚好的缓冲区。不用在循环了。fis.read(buf);System.out.println(newString(buf));fis.close();}publicstaticvoidreadFile_2()throwsIOException{FileInputStreamfis=newFileInputStream("fos.txt");byte[]buf=newbyte[1024];intlen=0;while((len=fis.read(buf))!=-1){System.out.println(newString(buf,0,len));}fis.close();}publicstaticvoidreadFile_1()throwsIOException{FileInputStreamfis=newFileInputStream("fos.txt");intch=0;while((ch=fis.read())!=-1){System.out.println((char)ch);}fis.close();}publicstaticvoidwriteFile()throwsIOException{FileOutputStreamfos=newFileOutputStream("fos.txt");fos.write("abcde".getBytes());fos.close();}}
importjava.io.*;classCopyPic{publicstaticvoidmain(String[]args){FileOutputStreamfos=null;FileInputStreamfis=null;try{fos=newFileOutputStream("d:\\2.png");fis=newFileInputStream("d:\\1.png");byte[]buf=newbyte[1024];intlen=0;while((len=fis.read(buf))!=-1){fos.write(buf,0,len);}}catch(IOExceptione){thrownewRuntimeException("复制文件失败");}finally{try{if(fis!=null){fis.close();}}catch(Exceptione){thrownewRuntimeException("读取关闭失败");}try{if(fos!=null){fos.close();}}catch(Exceptione){thrownewRuntimeException("写入关闭失败");}}}}
importjava.io.*;classTransStreamDemo{publicstaticvoidmain(String[]args)throwsIOException{//获取键盘录入对象//InputStreamin=System.in;//将字节流对象转成字符流对象,使用转换流。InputStreamReader//InputStreamReaderisr=newInputStreamReader(in);//为了提高效率,将字符串进行缓冲区技术高效操作。使用BufferedReader//BufferedReaderbufr=newBufferedReader(isr);//简化//键盘录入的最常见写法BufferedReaderbufr=newBufferedReader(newInputStreamReader(System.in));//OutputStreamout=System.out;//OutputStreamWriterosw=newOutputStreamWriter(out);//BufferedWriterbufw=newBufferedWriter(osw);//简化BufferedWriterbufw=newBufferedWriter(newOutputStreamWriter(System.out));Stringline=null;while((line=bufr.readLine())!=null){if(line.equals("over"))break;bufw.write(line.toUpperCase());bufw.newLine();bufw.flush();}bufr.close();}}
importjava.io.*;classTransStreamDemo2{publicstaticvoidmain(String[]args)throwsIOException{System.setIn(newFileInputStream("PersonDemo.java");System.setOut(newPrintStream("zzz.txt");BufferedReaderbufr=newBufferedReader(newInputStreamReader(System.in));BufferedWriterbufw=newBufferedWriter(newOutputStreamWriter(newFileOutputStream("d:\\d1.txt"),"GBK"));Stringline=null;while((line=bufr.readLine())!=null){if(line.equals("over"))break;bufw.write(line.toUpperCase());bufw.newLine();bufw.flush();}bufr.close();}}
importjava.io.*;importjava.util.*;importjava.text.*;classExceptionInfo{publicstaticvoidmain(String[]args)throwsIOException{try{int[]arr=newint[2];System.out.println(arr[3]);}catch(Exceptione){try{Dated=newDate();SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");Strings=sdf.format(d);PrintStreamps=newPrintStream("exception.log");ps.println(s);System.setOut(ps);}catch(IOExceptionex){thrownewRuntimeException("日志文件创建失败");}e.printStackTrace(System.out);}}}//log4j用于日志建立的包
importjava.util.*;importjava.io.*;classSystemInfo{publicstaticvoidmain(String[]args)throwsIOException{Propertiesprop=System.getProperties();//System.out.println(prop);//prop.list(System.out);prop.list(newPrintStream("SystemInfo.txt"));}}