package io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* io流
* 数据类型: 字节流 字符流
* 如果要操作的文件在我们的Windows自带的记事本下打开能看的懂的话,就是字符流,否则就是字节流
* 什么都不知道的时候,一律可以看成是字节流
* 字节流 有两个抽象的基类 InputStream OutputStream
* 什么是输入流,输出流? 这是相对程序或者内存说的
*
*
* 字符流 Reader Writer
*
*/
public class Test {
@SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
//读操作 就是将磁盘的文件读入到程序
FileInputStream fis = new FileInputStream("D:/a/1.txt");
int i = fis.read();
fis.close();
System.out.println(i);
//写操作就是将abc 写入到磁盘中,就是将程序里的东西写到文件中,相对程序来说就是往外写
//这里的true是表示追加,覆盖的话,可以不写,或者写false
FileOutputStream fos = new FileOutputStream("D:/a/1.txt",true);
fos.write(97);
fos.close();
}
}
在utf-8中,一个汉字是3个字节,那么怎么验证呢?
package io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
/**
*在utf-8中,一个汉字是3个字节,那么怎么验证呢
*比如在 D:/a/1.txt 中有一个汉字 好
* @author root
*
*/
public class Demo {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("D:/a/1.txt");
//我们现在先从文件中依次读入3个字节
int i1 = fis.read();
int i2 = fis.read();
int i3 = fis.read();
//将这三个字节转化成字符
String str = new String(new byte[]{(byte)i1,(byte) i2,(byte) i3});
System.out.println(str);
}
}