Io流之File概述(递归/字节流/字符流)

File:1.文件 2.目录(文件夹)3.路径名

IO流用来处理设备之间的数据传输

流按操作数据分为两种:字节流与字符流。

package com.oracle.demo01;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo01 {
	  public static void main(String[] args) throws IOException {
	       //创建字节输出流对象
		   //当这个构造方法指定地址的时候,如果存在则覆盖,如果不存则自动创建!(必须指定文件,不能是文件夹)
		   FileOutputStream fos=new FileOutputStream("D:\\java\\d.txt");
		   //向文件中写入一个字节write(int b) ASCII码
		   //0 -48
		   //a -49
		   //A -65
/*		   fos.write(49);
		   fos.write(48);
		   fos.write(48);*/
		   //向文件中写入一个字节数组 write(byte[] b)
		   //BCDE
		   byte[] bytes={-66,-67,-68,-69,-70};
		   /*fos.write(bytes);*/
		   //从哪开始 传几个
		   fos.write(bytes,2,2);
		   //释放资源
		   fos.close();
	}
}

  

package com.oracle.demo01;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo02 {
	   public static void main(String[] args) throws IOException {
		//创建字节输出流(开启续写功能)
		  FileOutputStream  fos=new FileOutputStream("D:\\java\\d.txt",true);
		//字符串--->字节数组 getBytes();
		  fos.write("abc".getBytes());
		//换行\r\n
		  fos.write("\r\n换行了".getBytes());
		//释放资源
		  fos.close();
	}
}

如果不开启续写模式,则不用加任何属性,默认就是false

递归:在当前方法里面调用自身就称为递归

public void method(){
	System.out.println(“递归调用自身”);
	//在当前方法内调用自己
	method();
}

递归也可以分两种形式,一种是直接递归,另一种是间接递归

直接递归就是方法自身调用自身,间接递归是A可以调用B,B在调用C,C在调用A这种形式

字节流:什么文件都可以复制

字节输出流::OutputStream

以后要是看到Stream结尾就要肯定为是字节流,如果不是Stream结尾则是字符流

close():释放资源进行关闭之前,自动刷新一下

flush():写一次刷新一次!

明确数据源:FileOutputStream fis=new FileOutputStream("写入的路径");

package com.oracle.demo01;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class Demo04 {
	   public static void main(String[] args) throws IOException {
	   //创建字节输入流(明确从哪个文件中读取数据)
		 FileInputStream fis=new FileInputStream("D:\\java\\d.txt");
		 //读取一个字节
/*		 int len=fis.read();
		 System.out.println((char)len);
		 len=fis.read();
		 System.out.println((char)len);
		 len=fis.read();
		 System.out.println((char)len);
		 len=fis.read();
		 System.out.println((char)len);
		 len=fis.read();
		 System.out.println((char)len);
		 len=fis.read();
		 System.out.println(len);*/
		 
		 //一个字节一个字节读取文件所有数据
		 int len=0;
		 while((len=fis.read())!=-1){
			 System.out.println((char)len);
		 }
		 //释放资源
		 fis.close();
	   }
}

 字节输入流:InputStream

   FileInputStream 读取文件数据的输入字节流

   1.找到目标文件 2. 建立数据的输入通道 3. 读取文件中的数据 4.关闭资源

package com.oracle.demo01;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class Demo05 {
	  public static void main(String[] args) throws IOException {
		  //明确数据源
	    FileInputStream fis=new FileInputStream("D:\\java\\d.txt");
	      //创建字节数组
	    byte[] bytes=new byte[2];
/*	    //读取一个字节数组
	    int len=fis.read(bytes);
	    //实际读取的有效字节数 
	    System.out.println(len);
	    //字节数组---->字节字符串
	    System.out.println(new String(bytes));*/
	    
	    //读取一个字节数组
	    int len=0;
	    while((len=fis.read(bytes))!=-1){
	    	System.out.println(new String(bytes,0,len));
	    }
	    //释放资源
	    fis.close();
	}
}

 字符流:只可以复制文本文件,什么是文本文件,记事本打开能看的懂的就是文本文件!

    字符输入流基类:Reader

    字节流转字符流:InputStreamReader                //读取字节输入流中的字符

  

package com.oracle.demo02;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Demo01 {
	 public static void main(String[] args) throws IOException {
	 //创建字符输入流
	   FileReader fr=new FileReader("D:\\java\\d.txt");  
	   int len=0;
	   //一个字符一个字符读
	   while((len=fr.read())!=-1){
		    System.out.println((char)len);
	   }
	  //释放资源
	   fr.close();
	}
}

  

package com.oracle.demo02;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Demo02 {
    public static void main(String[] args) throws IOException {
		//创建字符输入流
    	FileReader fr=new FileReader("D:\\java\\d.txt");
    	//创建字符数组
    	char[] ch=new char[1024];
    	//一个字符数组一个字符数组的读
    	int len=0;
    	while((len=fr.read(ch))!=-1){
    		System.out.println(new String(ch,0,len));
    	}
    	//释放资源
    	fr.close();
    }
}

   字符输出流:writer

Writer是所有字符输出流的顶层父类, 并且这个类是一个抽象类。一般使用子类,最常用的子类是FileWriter。
public class Demo01Writer {
    public static void main(String[] args) throws IOException {
        //1创建
        FileWriter fw = new FileWriter("fiel05.txt");
        //2写入
        fw.write("起于凡而非凡");
//         3刷新
        fw.flush();
//         4释放
        fw.close();

    }
}

  

import java.io.FileWriter;
import java.io.IOException;

public class Demo03 {
	   public static void main(String[] args) throws IOException {
	   //创建字符输出流
		 FileWriter fw=new FileWriter("D:\\java\\d.txt");
	    //写入一个字符
		fw.write(100);
		fw.flush();
		//写入一个字符
		fw.write("起于凡而非凡");
		//写入字符数组
		char[] ch={'a','1','r'};
		fw.write(ch);
		fw.flush();
		//释放资源
		fw.close();
	}
}

  

猜你喜欢

转载自www.cnblogs.com/awdsjk/p/11039990.html