博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
零基础Java学习笔记(五)
阅读量:3949 次
发布时间:2019-05-24

本文共 4045 字,大约阅读时间需要 13 分钟。

IO(第一部分)

以及编码出现乱码的问题

File

(一个抽象的概念 空即路径或者文件或者文件夹)

API的使用规则

  1. 类的继承体系
  2. 构造器:有无默认
  3. 方法 :名称 形参 返回
package cn.chenye.io;/** *\/名称分隔符 */import java.io.File;/** * 相对路径  当前目录 user.dir * 绝对路径:存在盘符 * @author ASUS * */public class PathDemo01 {
public static void main(String[] args) {
String path="D:\\东南大学\\57118115陈烨\\SEU\\学习\\A\\Java\\Eclipse\\IO_study\\src\\img_0054.png"; System.out.println(File.pathSeparatorChar); System.out.println(File.separatorChar); System.out.println(path); File src=new File("D:\\东南大学\\57118115陈烨\\SEU\\学习\\A\\Java\\Eclipse\\IO_study\\src\\img_0054.png"); System.out.println(src.length()+"KB"); System.out.println(src.getAbsolutePath()); System.out.println(System.getProperty("user.dir")); }}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8sXky2UH-1581082769090)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20200207164529233.png)]

package cn.chenye.io;import java.io.File;import java.io.IOException;/** * .length返回文件的字节数  文件夹的字节数为0 * creatNewFile:不存在的时候创建  存在的时候返回创建成功 * @author ASUS *delete 删除已经创建的文件 */public class FileDemo02 {
public static void main(String[] args) throws IOException {
File src=new File("D:\\东南大学\\57118115陈烨\\SEU\\学习\\A\\Java\\Eclipse\\IO_study\\src\\img_0054.png"); System.out.println(src.getAbsolutePath()); System.out.println(src.exists()); System.out.println(src.isFile()); System.out.println(src.isDirectory()); File src2=new File("/IO_study/src/img_0054.png"); System.out.println(src2.getAbsolutePath()); System.out.println(src2.exists()); System.out.println(src2.isFile()); System.out.println(src2.isDirectory()); File src3=new File("D:/asd.text"); boolean flag =src3.createNewFile(); System.out.println(flag); flag=src3.delete(); System.out.println(flag);}}

文件夹的创建 遍历

mkdir() mkdirs():创建目录,如果父目录链不存在一同创建,mkdir()要保证上级目录存在

list():列出下级名称

listFile():列出下级File对象

listRoots():跟路径

打印所有子目录使用递归

package cn.chenye.io;import java.io.File;public class FileDemo03 {
public static void main(String[] args) {
File dir=new File("D:\\东南大学\\57118115陈烨\\SEU\\学习\\A\\Java\\Eclipse\\IO_study"); printName(dir,1); String[] subName=dir.list(); for(String s:subName) {
System.out.println(s); } } public static void printName(File src,int deep) {
System.out.println(deep+" "+src.getName()); if(null==src||src.exists()) {
return; }else if(src.isDirectory()) {
//目录 for(File s:src.listFiles()) {
printName(s,deep+1); } } }}

文件夹统计

创建对象,面相对象思维

文件编码 字符集 乱码

GB2312:简体中文编码,一个汉字占用2字节,在大陆是主要编码方式。

BIG5:繁体中文编码。主要在台湾地区采用。

GBK:支持简体及繁体中文,但对他国非拉丁字母语言还是有问题。

UTF-8:Unicode编码的一种。Unicode用一些基本的保留字符制定了三套编码方式,它们分别UTF-8,UTF-16和UTF-32。在UTF-8中,字符是以8位序列来编码的,用一个或几个字节来表示一个字符。这种方式的最大好处,是UTF-8保留了ASCII字符的编码做为它的一部分。UTF-8俗称“万国码”,可以同屏显示多语种,一个汉字占用3字节。为了做到国际化,网页应尽可能采用UTF-8编码。

当然,处理中文时http头也要改成UTF-8编码的—–加上。

package cn.chenye.io;import java.io.IOException;import java.io.UnsupportedEncodingException;/** * encode * @author ASUS * */public class ContentEncode {
public static void main(String[] args) throws IOException {
String msg="whoisyourfather陈烨"; byte[] datas=msg.getBytes();//默认使用工程 的字符集 System.out.println(datas.length); //编码:其他字符集 datas=msg.getBytes("UTF-16LE"); System.out.println(datas.length); datas=msg.getBytes("GBK"); System.out.println(datas.length); }}

乱码问题:

  1. 字节数不够
  2. 字符集不统一

第一步:java文件编码格式

文件格式非固定:

Java文件在编写之前需要指定文件的编码格式,默认编码和当前操作系统平台编码保持一致。比如,当前操作系统平台为windows中文版,那么编码一般为GBK。当然可以对保存文件的编码进行修改。例如修改成UTF-8。那么此时文件保存的编码就为UTF-8。

第二步:java文件编写保存

该java文件中,有读取网络流的方法、读取本地文件的方法及其输出字符串到文件中的方法;编写完成之后,那么则以第一步的编码进行保存。另外,当前java文件中的所有字符串则以第一步中的编码得以保存。比如说当前java文件中有 String str=”abc中国”;第一步的编码设置为UTF-8,那么则以UTF-8进行保存。如果是GBK,那么则以GBK进行保存。

第三步:编译成Class

编译后的class文件的编码固定为UTF-8;和java文件编码格式无关。说明,编译器在编译的过程中将文件格式做了处理。编译器的这种处理操作不会带来乱码问题,因为我们必须要相信编译器的编解码处理过程。

第四步:Load class 文件到jvm

jvm中的所有字符串编码都为unicode。所以的话,从class文件再到jvm。编码又做了一次处理。同样也必须相信这种处理不会为乱码留下伏笔;

第五步:内存

内存中运行的是jvm中的数据,jvm中的数据编码为unicode。那么内存中同样也以unicode方式进行存储。但是有一个问题,内存运行的过程中,可能会设计到读取文件内容、网络内容以及输出这些内容的操作。在内存中读取的网络内容、文件内容会以不同的编码出现。这种编码和java文件中处理的方式有关。这儿是乱码问题出现原因的一部分。内存中还有输出字符串内容到文件的操作。这儿也会存在问题。

转载地址:http://togwi.baihongyu.com/

你可能感兴趣的文章
ldap学习参考博客
查看>>
linux学习之source命令与alias(别名)使用
查看>>
MYSQL常用查询
查看>>
安装Linux虚拟机绑定IP操作
查看>>
centos7离线安装 mysql
查看>>
mysql学习使用一(查询)
查看>>
Linux 学习之sed命令详解
查看>>
JAVA基础——常用IO使用
查看>>
spring框架pom.xml文件解析
查看>>
代码比较工具DiffMerge的下载和使用
查看>>
linux学习之vim全选,全部复制,全部删除
查看>>
linux 学习之awk命令
查看>>
linux学习之查找文件find,locate,whereis使用
查看>>
JS中$含义及用法
查看>>
web学习之ajax记录
查看>>
mysql存储过程 --游标的使用 取每行记录
查看>>
ranger通过web界面登录用户验证类UsernamePasswordAuthenticationFilter
查看>>
墨菲定律——职场
查看>>
java匿名内部类原理及使用
查看>>
java基础学习之Timer定时器使用
查看>>