Java文件流


Java读写文件的IO流分两大类,字节流和字符流,基类分别是

字符:Reader和Writer

字节:InputStream和OutPutStream


BufferedInputStream是带缓冲区的输入流,默认缓冲区大小是8M,能够减少访问磁盘的次数,提高文件读取性能;

BufferedOutputStream是带缓冲区的输出流,能够提高文件的写入效率。


1.java的文件操作

1.1目录或文件的创建

package com.文件流.s1;

import java.io.File;//java.io.File类用于表示文件(目录)
import java.io.IOException;

/**
 * 文件操作:文件目录创建,文件创建
 */
public class Demo1 {

    public static void main(String[] args) throws IOException {
        //文件对象 mac,linux中注意权限问题
        File file = new File("D://java创建的目录");
        boolean b = file.mkdir(); // 创建虚拟目录
        if (b) {
            System.out.println("目录创建成功");
            //文件对象 mac,linux中注意权限问题
            file = new File("D://java创建的目录//java创建的文件.txt");
            boolean b2 = file.createNewFile(); // 创建文件
            if (b2) {
                System.out.println("文件创建成功!");
            } else {
                System.out.println("文件创建失败!");
            }
        } else {
            System.out.println("目录创建失败");
        }
    }
}

1.2文件或目录删除操作

package com.文件流.s1;

import java.io.File;
import java.io.IOException;

/**
 * 文件操作:文件删除和文件目录删除
 */
public class Demo2 {

	public static void main(String[] args) throws IOException {
		File file=new File("D://java创建的目录//java创建的文件.txt");
		if(file.exists()){ // 判断文件是否存在
			boolean b=file.delete(); // 删除文件
			if(b){
				System.out.println("文件删除成功");
			}else{
				System.out.println("文件删除失败");
			}
			file=new File("D://java创建的目录");
			if(file.exists()){
				boolean b2=file.delete(); // 删除目录
				if(b2){
					System.out.println("目录删除成功");
				}else{
					System.out.println("目录删除失败");
				}
			}
		}
		
	}
}

1.3遍历文件(查找文件)

package com.文件流.s1;

import java.io.File;
import java.io.IOException;

/**
 * 目录的遍历
 */
public class Demo3 {

    public static void main(String[] args) {
        String path = "D:\\";//要遍历的路径
        File file = new File(path);//获取其file对象
        File[] fs = file.listFiles();//遍历path下的文件和目录,放在File数组中
        for (File f : fs) {  //遍历File[]数组
            if (!f.isDirectory())//若非目录(即文件),则打印
                System.out.println(f);
        }
    }
}

1.4文件的遍历

package com.文件流.s1;

import java.io.File;
import java.io.IOException;

/**
 * 文件递归
 */
public class Demo4 {

	public static void listFile(File file){
		if(file!=null){
			if(file.isDirectory()){ // 是目录情况
				System.out.println(file); // 打印目录
				File files[]=file.listFiles(); // 遍历目录
				if(files!=null){
					for(int i=0;i<files.length;i++){
						listFile(files[i]); // 递归调用自身
					}
				}
			}else{ // 是文件情况
				System.out.println(file); // 是文件 直接打印文件的路径
			}
		}
	}
	
	public static void main(String[] args) throws IOException {
		File file=new File("D://");
		listFile(file);
	}
}

2.字节流

2.1输入流

第一种:

package com.文件流.s2;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

/**
 * 字节流:输入操作
 */
public class Demo01 {
	/**
	 * 字节
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		File file=new File("D:\\a.txt");//创建文件对象
		InputStream inputStream=new FileInputStream(file);//创建字节输出流对象
		byte b[]=new byte[1024];//创建字节数组对象
		int len=inputStream.read(b);//读取字节数组长度
		inputStream.close();//关闭字节流
		System.out.println("读取的内容是:"+new String(b,0,len));
	}
}

第二种:

package com.文件流.s2;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
/**
 * 字节流:输入操作
 */
public class Demo2 {

	public static void main(String[] args) throws Exception {
		File file=new File("D:\\a.txt");//创建文件对象
		InputStream inputStream=new FileInputStream(file);//创建字节输出流对象
		int fileLength=(int) file.length();//文件的长度
		byte b[]=new byte[fileLength];//创建字节文件对象
		inputStream.read(b);//获取字节流长度
		inputStream.close();//关闭字节流
		System.out.println("读取的内容是:"+new String(b));
	}
}

第三种:

package com.文件流.s2;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
/**
 * 字节流:输入操作
 */
public class Demo3 {

	public static void main(String[] args) throws Exception {
		File file=new File("D:\\a.txt");//创建文件对象
		InputStream inputStream=new FileInputStream(file);//创建字节输出流对象
		int fileLength=(int) file.length();//获取字节长度
		byte b[]=new byte[fileLength];//创建字节数组对象
		int len=0;
		int temp=0;//字节流的长度
		while((temp=inputStream.read())!=-1){//如果字节流的长度不等于-1
			b[len++]=(byte) temp;
		}
		inputStream.close();
		System.out.println("读取的内容是:"+new String(b));
	}
}

2.2输出流

第一种:

package com.文件流.s2;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

/**
 * 字节流:输出操作
 */
public class Demo4 {

	public static void main(String[] args) throws Exception {
		File file=new File("D:\\a.txt");//创建文件对象
		OutputStream out=new FileOutputStream(file);//创建文件输出流对象
		String str="你好,我好,大家好 ,爱生活,爱拉芳";//字符串
		byte b[]=str.getBytes();//字符串转换为字节数组
		out.write(b);//写入
		out.close();//关闭
	}
}

第二种:

package com.文件流.s2;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

/**
 * 字节流:输出操作
 */
public class Demo5 {

	public static void main(String[] args) throws Exception {
		File file=new File("D:\\a.txt");//创建文件对象
		OutputStream out=new FileOutputStream(file,true);//创建字符输出对象
		String str="你好,我好,大家好 ,爱生活,爱拉芳322好啊";//字符串
		byte b[]=str.getBytes();//字符串转换为字节数组
		out.write(b);
		out.close();
	}
}

3.缓冲区

package com.文件流.s3;

import java.io.*;

/**
 * 缓冲方式
 */

public class Demo01 {

	/**
	 * 缓冲方式
	 * @throws Exception
	 */
	public static void bufferStream()throws Exception{
		BufferedInputStream bufferedInputStream=new BufferedInputStream(new FileInputStream("D:\\a.txt"));//创建缓冲区输入流
		BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(new FileOutputStream("D:\\复制a.txt"));//创建缓冲区输出流
		int b=0;
		long startTime=System.currentTimeMillis();//获取当前的时间
		while((b=bufferedInputStream.read())!=-1){//缓冲区字节流还有
			bufferedOutputStream.write(b);//写入缓冲区
		}
		bufferedInputStream.close();//关闭缓冲区输入流
		bufferedOutputStream.close();//关闭缓冲区输出流
		long endTime=System.currentTimeMillis();//获取当前的系统时间
		System.out.println("缓冲方式话费的时间:"+(endTime-startTime));
	}
	
	
	/**
	 * 非缓冲方式
	 * @throws Exception
	 */
	public static void stream()throws Exception{
		InputStream inputStream=new FileInputStream("D:\\a.txt");//创建输入流
		OutputStream outputStream=new FileOutputStream("D:\\复制a.txt");//创建输出流
		int b=0;
		long startTime=System.currentTimeMillis();//获取当前系统时间
		while((b=inputStream.read())!=-1){//字节流的长度还有
			outputStream.write(b);//写入
		}
		inputStream.close();//关闭输入流
		outputStream.close();//关闭输出流
		long endTime=System.currentTimeMillis();//获取当前时间
		System.out.println("非缓冲方式话费的时间:"+(endTime-startTime));
	}
	
	public static void main(String[] args) throws Exception {
		stream();
//		bufferStream();
	}
}

4.字符流

4.1字符流读

第一种

package com.文件流.s4;

import java.io.File;
import java.io.FileReader;
import java.io.Reader;

/**
 * 字符流:读
 */
public class Demo01 {
	/**
	 * 字符
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		File file=new File("D://a.txt");//创建文件
		Reader reader=new FileReader(file);//创建读字符对象
		char c[]=new char[1024];//创建字符对象
		int len=reader.read(c);//读取文件字符长度
		reader.close();//关闭字符流对象
		System.out.println("读取的内容是:"+new String(new String(c,0,len)));
	}
}

第二种

package com.文件流.s4;

import java.io.File;
import java.io.FileReader;
import java.io.Reader;

/**
 * 字符流:输入流
 */
public class Demo2 {

	public static void main(String[] args) throws Exception {
		File file=new File("D://a.txt");//创建文件对象
		Reader reader=new FileReader(file);//创建字符流对对象
		char c[]=new char[1024];//创建字符流
		int len=0;
		int temp=0;
		while((temp=reader.read())!=-1){//文件还在读
			c[len++]=(char) temp;
		}
		reader.close();
		System.out.println("读取的内容是:"+new String(new String(c,0,len)));
	}
}

4.2字符流写

第一种

package com.文件流.s4;

import java.io.File;
import java.io.FileWriter;
import java.io.Writer;

/**
 * 字符流:输出流
 */
public class Demo3 {

	public static void main(String[] args) throws Exception {
		File file=new File("D://测试文件.txt");//创建文件对象
		Writer out=new FileWriter(file);//创建字符流对象
		out.write("爱我中华");//写入
		out.close();//关闭
	}
}

第二种

package com.文件流.s4;

import java.io.File;
import java.io.FileWriter;
import java.io.Writer;

public class Demo4 {

	public static void main(String[] args) throws Exception {
		File file=new File("D://测试文件1.txt");//创建文件对象
		Writer out=new FileWriter(file,true);//创建字符写入对象
		out.write("爱我中华");
		out.close();
	}
}

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值