io流-文件的读取与写入

  • Post author:
  • Post category:其他




字节流



读取文件中的内容

public class Demo01 {
    public static void main(String[] args) {
        try {
            File file = new File("D:\\WorkPlace\\something\\520.txt");//创建一个file对象
           //1.在文件和程序中铺设管道
            FileInputStream f1 = new FileInputStream(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");
        }
    }
}



向磁盘写入

 public static void main(String[] args) {
        //1.创建水厂
        String data = "\ni have loved";
        try {
            //2.铺设通往硬盘的管道
            //append为true,则追加
            FileOutputStream fout = new FileOutputStream("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
	
*/



文件复制

public static void main(String[] args) {
        int temp =0;//用于接收read()返回的值
        try {
            FileInputStream fis = new FileInputStream("D:\\WorkPlace\\something\\520.txt");//连接用于复制的文件
            FileOutputStream fos = new FileOutputStream("D:\\WorkPlace\\something\\522.txt");//连接盘符

            while((temp=fis.read())!=-1){//read()读取到最后会返回-1
                fos.write(temp);//写入内容
            }
            fis.close();//关闭
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }



缓冲复制

public class Demo04 {
    public static void main(String[] args) {

        try {
            long starTime = System.currentTimeMillis();
			//建立水厂与管道
            InputStream ips = new FileInputStream("D:\\__easyHelper__\\jdk api 1.8_China.zip");
            BufferedInputStream bis = new BufferedInputStream(ips);
			//建立与盘符的管道
            OutputStream fos = new FileOutputStream("D:\\WorkPlace\\something\\api 1.8_China.zip");
            BufferedOutputStream bos = new BufferedOutputStream(fos);
			//建立小车用于装载数据
            byte[] car = new byte[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不会不必要地复制数据。
    */



字符流


读取纯文本文件比较方便,但不能读取图片,视频,音频等。



输入

public static void main(String[] args) {
        try {
            //1.建立水厂
            //2.铺设管道
            FileReader fr = new FileReader("D:\\WorkPlace\\something\\520.txt");
            //3.打开水龙头
            int ch = 0;
            char[] car = new char[1024];

            while ((ch=fr.read(car))!=-1){
                String str = new String(car);
                System.out.println(str);
            }
            //4关闭水龙头
            fr.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }



输出

public static void main(String[] args) {
        //1.水厂
        String str = "   java很简单!!!";
        //2.建立管道
        try {
            FileWriter fw= new FileWriter("D:\\WorkPlace\\something\\520.txt",true);
         //3.打开水龙头
            fw.write(str);
         //4.关闭
            fw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }



版权声明:本文为xuexikunnanhu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。