java的文件

java的文件

一、文件

1、文件的定义

2、编码格式

编码格式中文占用空间非中文占用空间
UTF-831
ISO-8859-111
GBK21
UTF-1644(真正存储的是1个存储空间)
String str = "我";
try{
	byte[] by = str.getBytes("UTF-8");  //放编码格式
}catch(Exception e){
	e.printStockTrace();
}

二、文件的移动

1、简单回顾C#的文件和目录

在C#中文件和目录的关键字是分开的;

文件:对文件的操作有两个类:File和FileInfo ;其中FileInfo是static类,在C#文件中的

目录:对目录的操作也有两个类:Directory和DirectoryInfo;其中DirectoryInfo是static类

2、Java的文件和目录

1、文件的创建

在Java中文件和目录都是用File来创建的,File不是static的;

创建对象:

new File(“文件路径+文件名”);

2、Java文件的常用方法

方法名说明方法名说明
exists()getPath()文件的相对路径
createNewFile()创建文件getAbsolutePath()文件的绝对路径
mkdir()创建一级目录getParent()上一级目录
mkdirs()创建多级目录canRead()是否可读
getName()文件名canWrite()是否可写
delete()删除deleteOnExit()检查文件是否存在,存在就删除
isHidden()是否隐藏文件listFiles()文件集合
length()得到大小isFile()判断是否是文件
isDirectory()判断是否是目录

这些是Java文件的常用方法;还用其他方法可以去网上搜索或者去看源码;

三、文件的读写

1、流

1、流的定义:字符的通道,数据的传输;

2、分类:

根据读取方式分类:字符流和字节流;

字符流:一次性读取8b(位);

字节流:一次性读取一个字符(16b,位);

根据方向分类:

输入流(读):从硬盘到内存

输出流(写):从内存到硬盘

3、字节流和字符流的区别

举例:

1、如果在txt里面存一个“我”;

读取一个字符:会把“我”完整的读出来;

读取一个字节:不会把“我”完整的读出来;

2、如果在txt里面存一个字母“a”;

字节:会读出“a”;

字符:会读出“a”;

3、如果在txt里面存一个数字2;

字节:会读出“2”;

字符:会读出“2”;

从上面3个例子来对比,字节流和字符流在读取中文时的区别比较明显。

注:字符流能实现的功能,字节流都能实现,反之就不一定了;

四、文件的读取

1、字节流:

​ 字节输入流:InputStream(抽象类)

​ 实现类:1、FileInputStream;2、DataInputStream

​ 字节输出流:OutputStream(抽象类)

​ 实现类:1、FileOutputStream; 2、DataOutputStream

2、字符流:

​ 字符输入流:Reader

​ 实现类:1、FileReader ; 2、BufferedReader

​ 字符输出流:Writer

​ 实现类:1、FileWriter;2、BufferedWriter

3、文件的读写步骤:

1、导入包:java.IO;

2、创建流对象;

3、使用对象读写;

4、关闭流;

4、FileInputStream的方法

​ int read():读取ASCII码;

​ int read(byte[]):一次性读取多个字节,多个就是数组的长度;

注:以上两个方法都是返回-1的时候表示读取结束;FileInputStream的方法不止这两个,其他方法可以上网搜索或是查阅相关的资料进行了解。

5、FileWriter和FileReader的方法、

FileWriter的方法:

​ int writer(int num):对应ASCII码;

​ int writer(cahr[] ch):写入字符

FileReader的方法:

​ int read():对应ASCII码;

​ int read(char[] ch);读取字符;

FileWriter和FileReader的方法肯定不止这些,其他方法请自行查阅,谢谢;

6、BufferdeReader和BufferedWriter

BufferdeReader和BufferedWriter比之前的类多了一个缓冲区,就是在操作的时候多了一个中间区,这个中间区就是缓冲区;

1、BufferedReader步骤:

FileReader fr = null;
BufferedReader br = null;
try {
    //创建一个file Reader对象
    fr = new FileReader("D:\\eclipse\\Java\\Ch08\\yx\\hello.txt");  //路径
    //创建一个bufferedReader对象
    br = new BufferedReader(fr);
    //读取
    String line = br.readLine();
    while(line != null){
        System.out.println(line);
        line = br.readLine();
    }

} catch (IOException e) {
    System.out.println("文件不存在!");
}finally{
    try {
        if(br != null){
            br.close();
        }
        if(fr != null){
            fr.close();
        }
    } catch (IOException e2) {
        e2.printStackTrace();
    }

2、BufferedWriter

Writer out = null
BufferedWriter bw = null;
try{
	out = new FileWiter("路径");
	bw = new BufferedWriter(out);
	bw.write(49);
	bw.write("文本");
    //write()方法里面放的是数字是ASCII码,如果是双引号引起来的就是文本;
	char[] a = {"1","a","我"};
	bw.write(a);  //写入到文本
} catch (IOException e) {
    System.out.println("文件不存在!");
}finally{
    try {
        if(bw != null){
            bw.close();
        }
        if(out != null){
            out.close();
        }
    } catch (IOException e2) {
        e2.printStackTrace();
    }

关于java的文件操作的类不止这些,还有很多,如图:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值