字节流
读取文件中的内容
publicclassDemo01{publicstaticvoidmain(String[] args){try{File file=newFile("D:\\WorkPlace\\something\\520.txt");//创建一个file对象//1.在文件和程序中铺设管道FileInputStream f1=newFileInputStream(file);//FileInputStream fis = new FileInputStream("D:\\WorkPlace\\something\\520.txt")//打开水龙头int a=0;while((a=f1.read())!=-1){//读到最后返回一个-1,返回的是一个整数类型System.out.print((char)a);}
f1.close();//关闭水龙头}catch(Exception e){System.out.println("file can not find");}}}
向磁盘写入
publicstaticvoidmain(String[] args){//1.创建水厂String data="\ni have loved";try{//2.铺设通往硬盘的管道//append为true,则追加FileOutputStream fout=newFileOutputStream("D:\\WorkPlace\\something\\521.txt",true);//3.打开水龙头放水byte[] foutTemp=data.getBytes();
fout.write(foutTemp);//文件不存在则自动创建
fout.close();//关闭}catch(Exception e){
e.printStackTrace();}}/*
FileOutputStream && BufferedOutputStream extend OutputStream
*/
文件复制
publicstaticvoidmain(String[] args){int temp=0;//用于接收read()返回的值try{FileInputStream fis=newFileInputStream("D:\\WorkPlace\\something\\520.txt");//连接用于复制的文件FileOutputStream fos=newFileOutputStream("D:\\WorkPlace\\something\\522.txt");//连接盘符while((temp=fis.read())!=-1){//read()读取到最后会返回-1
fos.write(temp);//写入内容}
fis.close();//关闭
fos.close();}catch(Exception e){
e.printStackTrace();}}
缓冲复制
publicclassDemo04{publicstaticvoidmain(String[] args){try{long starTime=System.currentTimeMillis();//建立水厂与管道InputStream ips=newFileInputStream("D:\\__easyHelper__\\jdk api 1.8_China.zip");BufferedInputStream bis=newBufferedInputStream(ips);//建立与盘符的管道OutputStream fos=newFileOutputStream("D:\\WorkPlace\\something\\api 1.8_China.zip");BufferedOutputStream bos=newBufferedOutputStream(fos);//建立小车用于装载数据byte[] car=newbyte[1024*1024];int len=0;while((len=bis.read(car))!=-1){//打开与水厂之间的水龙头
bos.write(car,0,len);//写入盘符,ch代表具体的数量}
bis.close();//关闭水龙头
ips.close();
bos.close();long endTime=System.currentTimeMillis();System.out.println("花费"+(endTime-starTime)+"ms");}catch(Exception e){
e.printStackTrace();}}/*
public void write(byte[] b,
int off,
int len)
throws IOException从指定的字节数组写入len个字节,从偏移off开始到缓冲的输出流。
通常,该方法将给定数组的字节存储到此流的缓冲区中,根据需要将缓冲区刷新到底层输出流。 然而,如果请求的长度至少与此流的缓冲区一样大,那么这个方法将刷新缓冲区并将字节直接写入底层的输出流。 因此冗余BufferedOutputStream不会不必要地复制数据。
*/
字符流
读取纯文本文件比较方便,但不能读取图片,视频,音频等。
输入
publicstaticvoidmain(String[] args){try{//1.建立水厂//2.铺设管道FileReader fr=newFileReader("D:\\WorkPlace\\something\\520.txt");//3.打开水龙头int ch=0;char[] car=newchar[1024];while((ch=fr.read(car))!=-1){String str=newString(car);System.out.println(str);}//4关闭水龙头
fr.close();}catch(Exception e){
e.printStackTrace();}}
输出
publicstaticvoidmain(String[] args){//1.水厂String str=" java很简单!!!";//2.建立管道try{FileWriter fw=newFileWriter("D:\\WorkPlace\\something\\520.txt",true);//3.打开水龙头
fw.write(str);//4.关闭
fw.close();}catch(IOException e){
e.printStackTrace();}}