java的文件

java的文件

一、文件

1、文件的定义

2、编码格式

编码格式 中文占用空间 非中文占用空间
UTF-8 3 1
ISO-8859-1 1 1
GBK 2 1
UTF-16 4 4(真正存储的是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的文件操作的类不止这些,还有很多,如图:
java的文件_第1张图片

你可能感兴趣的:(java的文件)