File概述
字符集
String 编码解码
public class Test {
public static void main(String[] args) throws UnsupportedEncodingException {
String name="123我爱你中国abc";
byte[] bytes = name.getBytes("GBK");
//byte[]bytes=name.getBytes();
System.out.println(bytes.length);
System.out.println(Arrays.toString(bytes));
String s=new String(bytes,"GBK");
System.out.println(s);
}
}
IO流
文件字节输出流
字符输入流、输出流
public class test {
public static void main(String[] args) throws IOException {
Reader reader=new FileReader("src\\data.txt");
int code;
while((code=reader.read())!=-1)
{
System.out.print((char)code);
}
}
}
单个字符只要解码编码都是UTF-8就没什么问题
这个性能比较慢。
使用字符数组性能快,而且不会乱码
public static void main(String[] args) throws IOException {
Reader reader=new FileReader("src\\data.txt");
char[]buffer=new char[1024];1k字符
int len;因为最后一桶可能读不完,因此用多少读多少
while((len=reader.read(buffer))!=-1)
{
String rs=new String(buffer,0,len);
System.out.print(rs);
}
文件字符输出流
public static void main(String[] args) throws IOException {
Writer writer=new FileWriter("src/out2.txt",true);///覆盖管道,每次启动都会清空文件之前的数据
writer.write(98);
writer.write('a');
writer.write('徐');
writer.write("\r\n");
writer.write("abc我是中国人");
char []chars="abc我是中国人".toCharArray();
writer.write(chars);
writer.write("abc我是中国人",0,3);
writer.close();
}
缓冲流
小括号内自动释放资源。
字符缓冲流
shirt+F6能全部改变量名
转换流
序列化与反序列化
使用transient可以不用序列化。
打印流
out用的是打印流
properties
commons-io