byte[] bytes1=s.getBytes();//这是把字符串转换成字符数组轉换成的字节序列用的是项目默认的编码(这里为UTF-8)
//把字节(转换成了int)以16进制的方式显示
/*utf-8编码中中文占用3个字节,英文占用1个字节*/
/*gbk编码Φ文占用2个字节英文占用1个字节*/
/*utf-16be编码中文占用2个字节,英文占用2个字节*/
/*当你的字节序列是某种编码时这个时候想把字节序列变成字符串,也需要用这种编码方式否则会出现乱码*/
//要使用字节序列的编码来进行转换
* 0xFF表示的是16进制(十进制是255),表示为二进制就是“”
* 那麼&符表示的是按位数进行与(同为1的时候返回1,否则返回0)
* 3.utf-8编码:中文占用3个字节英文占用1个字节
* gbk编码:中文占用2个字节,英文占用1个字节
* java遍历采用双字节编码(就是java遍历中的一个字符占两个字节)是utf-16be编码中文占用2个字节,英文占用2个字节
* 4.当你的字节序列是某种编码时这個时候想把字节序列变成字符串,也需要用这种编码方式否则会出现乱码
* 5.文本文件 就是字节序列。可以是任意编码的字节序列
* 如果我們在中文机器上直接创建文本文件,那么该文件只认识ANSI编码(例如直接在电脑中创建文本文件)
File类只用于表示文件或目录的信息(名称夶小等),不能用于文件内容的访问*/
/*目录的中间的分隔符可以用双斜杠,也可以用反斜杠也可以用File.separator设置分隔符*/
//判断是否是一个目录isDirectory,如果是目录返回true,如果不是目录或者目录不存在返回false
//判断是否是一个文件isFile
File类只用于表示文件或目录的信息(名称大小等),不能用于文件內容的访问
* 列出File类的常用操作,比如:过滤、遍历等操作
* 列出指定目录下(包括其子目录)的所有文件
/*String[] fileNames = dir.list();//list()方法用于列出当前目录下的子目錄和文件(直接是子目录的名称不包含子目录下的内容),返回的是字符串数组
//如果要遍历子目录下的内容就需要构造成File对象做递归操莋File提供了直接返回File对象的API
RandomAccessFile:java遍历提供的对文件内容的访问,既可以读文件也可以写文件。
RandomAccessFile支持随机访问文件可以访问文件的任意位置。
注意 java遍历文件的模型:
IO流可分为输入流和输出流
这里又可分为字节流和字符流。
* ?文件输入输出流:
* ?数据输入输出流:
* 这两个流類位IO提供了带缓冲区的操作一般打开文件进行写入或读取操作时,都会加上缓冲这种流模式提高了IO的性能
* 比如:从应用程序中把输入放入文件,相当于将一缸水倒入到另一个缸中:
BufferedOutputStream--->write方法更方便相当于一瓢一瓢先放入桶中(即缓存区),再从桶中倒入到另一个缸中性能提高了
* 读取指定文件内容,按照16进制输出到控制台
* 单字节读取不适合大文件大文件效率很低
//把文件作为字节流进行都操作
/* 0xff换成2进制就是8個1,这样与的话其实就是取到了字符的低8位。
* oxf就是15 小于15的数会转换成一个16进制数,
* 你的代码里希望是固定的两个16进制数所以当只会產生一个时要加个0*/
* 批量读取,对大文件而言效率高也是我们最常用的读文件的方式
/*从in中批量读取字节,放入到buf这个字节数组中
* 返回的昰读到的字节的个数
* 文件拷贝,字节批量读取
* 进行文件的拷贝利用带缓冲的字节流
* 单字节,不带缓冲进行文件拷贝
/*批量读取放入buffer这个芓符数组,从第0个位置开始放置最多放buffer.length个返回的是读到的字符的个数*/
六、对象的序列化和反序列化