java里文件的读写 字节流和字符流

java里文件的读写

如果抽象类或者接口中的抽象的方法被子类覆写 那么实例化这个子类的时候 所调用的方法一定是被覆写的

File类 文件操作相关

文件和目录路径名的抽象表现形式
获取文件的对象 创建对象 通过构造方法
文件操作有俩基本功能
创建文件 createNewFile 调用此方法是才会创建
删除文件 delete //Boolean型
盘点路径是否存在 exists //存在返回true

	File file = new File("E:"+File.separator+"demo.txt");
	if(file.exists()) {//存在返回true
		file.delete();//文件的删除
	}else {
		file.createNewFile();//文件的创建
	}

isFile判断对象 是路径 还是目录

文件分隔符 \

separator 根据系统不同分隔符不一样

File file = new File("E:"+File.separator+"demo.txt");
如果目录不存在先判断路径是否存在

1.指定一个文件的路径 getParentFile 返回此抽象路径的父目录名 没有返回null
2.创建目录 mkdirs 没有路径 会自动创建路径

getName 取得文件名称
isDirectory 给定的路径是否是文件夹
isHidden 是否是隐藏文件
lastModified 最后一次修改日次
length 以字节为单位返回

//			System.out.println("文件名"+file.getName());
//			System.out.println("目录?"+file.isDirectory());
//			System.out.println("文件?"+file.isFile());
//			System.out.println("隐藏?"+file.isHidden());
//			System.out.println("修改时间"+new Date(file.lastModified()));
//			System.out.println("文件大小"+file.length());

修改路径

file.renameTo(newfile)//剪切加重命名
列出文件内容 listFile 以数组形式返回 查看当前文件夹下所有文件
		File result[] = file.listFiles();
		for(int x = 0 ; x < result.length; x++) {
			System.out.println(result[x]);
		}
如果有 文件夹下的文件夹 使用递归
public static void main(String[] args) {
	// TODO Auto-generated method stub
	File file = new File("E:"+File.separator+"myio");
	print(file);
}

public static void print(File file) {
	if(file.isDirectory()) {//file是路径
		File result[] = file.listFiles();
		if(result != null) {
			for(int x = 0; x < result.length; x++) {
				print(result[x]);
			}
		}
	}
	
	System.out.println(file);
}

字节流和字符流

对文件内容进行操作
字节操作流 OutputStream InputStream
字符操作流 writer Reader
操作完后关闭

字节输出流OutputStream 抽象类 得有子类 实例化FielOutputStream

单个字节 int 一组byte[] 指定位置读取output.write(data.getBytes(),0,3);

File file = new File("E:"+File.separator+"myio"+File.separator+"demo.txt");
	if(!file.getParentFile().exists()) {//存在返回true	//父路径不存在
		//file.delete();//文件的删除
		file.getParentFile().mkdirs();//创建
	}
	OutputStream output = new FileOutputStream(file);//创建一个输出流
	String data = "hello java";
	output.write(data.getBytes());//输出数据 按字节方式输出
	output.close();//关闭资源

InputStream 字节输入流
read 读取单个字节
读取一组字节
读取指定字节

	InputStream input = new FileInputStream(file);
	byte data[] = new byte[1024];
	int len = input.read();
	input.close();
	System.out.println(new String(data,0,len));

手机短信 开辟一个指定长度的空间接收

	InputStream input = new FileInputStream(file);
	
	byte data[] = new byte[1024];
	
	int foot = 0;//角标
	int temp = 0;
	while((temp = input.read()) != -1) {
		data[foot++] = (byte) temp;
	}
	
	input.close();
	System.out.println(new String(data,0,foot));

writer 字符输出流
相比outputStream 直接可以字符输出

	Writer out = new FileWriter(file);
	String data = "hello";
	out.write(data);
	out.close();

Reader 字符读取流

	Reader in = new FileReader(file);
	char data[] = new char[1024];
	int len = in.read(data);
	System.out.println(new String(data,0,len));

字节流 针对终端数据
字符流 针对缓冲区

你可能感兴趣的:(java里文件的读写 字节流和字符流)