33、Java I/O输入输出流
一、主要学习的知识点
1、解决编码问题
2、File类的使用
3、RandomAcessFile的使用
4、字节流的使用
5、字符流的使用
6、对象的序列化和反序列化
34、编码问题
1、把字符串用项目的默认编码输出 s.getByte();
String s ="慕课网IM";
byte[] byte1 = s.getBytes();//把字符串转换成字节序列,用的是项目的默认编码GBK
for(byte b: byte1){
//把字节数组转化成int以16进制输出
System.out.print(Integer.toHexString(b & 0xff )+",");
//& 0xff是为了把前面的24个0去掉只留下后八位
}
2、把字符串以指定的编码方式输出 s.geBytes("GBK");
String s ="慕课网IM";
System.out.println("GBK编码后的16进制");
byte[] byte2 = s.getBytes("gbk");
//gbk编码:中文占用2个字节,英文占用1个字节
for(byte b: byte2){
System.out.print(Integer.toHexString(b & 0xff )+",");
}
3、字节编码总结
gbk编码: 中文占用两个字节,英文占用一个字节
utf-8编码:中文占用三个字节,英文占用一个字节
java是双字节编码,是utf-16be编码
utf-16be编码:中文占用两个字节,英文占用两个字节
另外:文本文件就是字节序列,可以是任意编码的字节序列
35、当你希望用某种编码方式来输出而又不出现乱码的方式
/**
*当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码
*/
System.out.println();
byte[] byte5 = s.getBytes("UTF-8");
String str1 = new String(byte5,"utf-8");
System.out.println("以utf-8的编码方式来输出"+str1);
36、File类的常用API
Java.io.File类表示文件或目录,只用于表示文件或目录的信息,不能用于文件的访问。
常用的API:
1、创建File对象:File file = new File(String path); 注意:File.seperater();获取系统分隔符,如:"\"
2、boolean file.exists();判断文件是否存在
3、file.mkdir();或者。file.mkdirs;创建目录或多级目录
4、file.isDirectory();或者file.isFile();判断是否是目录,或者是否是文件。
5、file.delete();//删除文件或目录
6、file.createNewFile();//创建新文件
7、file.getName();//获取文件名称或目录的绝对路径
8、file.getAbsolutePath();//获取绝对路径
9、file.getParent();//获取父级绝对路径
10、file.getSize();//获取文件大小
11、file.getFormat();//获取文件格式
参考代码
package com.leeue.file;
import java.io.File;
import java.io.IOException;
/**
*
* 功能:这里列出File文件类的所有的API
* @author:李月
* @Version:
* @Date 2017年11月11日 下午3:57:08
*/
public class FileAPI {
/**
* 了解File类的构造函数
*/
public void testConstructor(){
/*
* 第一种构造函数
*/
File file = new File("F:\\javaio");//这里注意把"\"变成"\\"
File file1 = new File("F:"+File.separator);//使用 File.sepearator 这个来设置斜杠 \
System.out.println(file.exists());// --- true
if(file.exists()){
System.out.println("这个目录存在,正在删除这个目录");
file.delete();//删除这个目录
}else{
System.out.println("这个目录不存在,开始创建这个目录");
file.mkdir();//创建目录,根据file的路径
}
//判断是否是一个目录
System.out.println("是否是目录 "+file.isDirectory());
//判断是否是文件
System.out.println("是否是文件"+file.isFile());
/**
* 直接创建文件对象
*/
//File file2 = new File("F:\\javaio\\文件.txt");
File file2 = new File("F:\\javaio","文件.txt");//第二种文件创建方式
if(file2.exists()){//如果这个文件存在就会删除这个文件
System.out.println("文件存在,正在删除这个文件");
file2.delete();//删除这个文件
}else{
try {
System.out.println("文件不存在,正在创建文件");
file2.createNewFile();//如果这个文件不存在就创建这个文件
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//常用的file对象API
System.out.println(file);//直接打印file,是打印file的路径 file.toString();内容
System.out.println(file.getAbsolutePath());
System.out.println(file.getName());
}
/**
*
* @param args
*/
public static void main(String[] args) {
//
FileAPI fa = new FileAPI();
fa.testConstructor();
}
}