编码格式 | 中文占用空间 | 非中文占用空间 |
---|---|---|
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();
}
在C#中文件和目录的关键字是分开的;
文件:对文件的操作有两个类:File和FileInfo ;其中FileInfo是static类,在C#文件中的
目录:对目录的操作也有两个类:Directory和DirectoryInfo;其中DirectoryInfo是static类
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、流的定义:字符的通道,数据的传输;
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();
}