总流程:先创建一个文本文件------->里面写入一些内容(纯字母和字母加文字)----------->
然后通过输入流获取文件里面的内容,两种方式。
1.第一种,获取单个的字符 ,先创建文件 ,java.txt
//路径为D盘,文件名为java.txt
String path = "D:\\java.txt";
//创建一个文件对象,用来准备创建文件
File file = new File(path);
//进行判断D盘下是否存在java.txt文件,如果没有那么将创建
if (!file.exists()){
file.createNewFile();
System.out.println("文件创建成功");
}else {
System.out.println("文件已存在");
}
2.准备在文件里面写入一些内容,比如hello,world,并且保存。(纯字节)
3.准备读取用文件流,通过read方法获取返回值,用char将返回值转换为原内容。
//创建文件流的对象,用来进行读取
FileInputStream fileInputStream = new FileInputStream(path);
//fileInputStream.read() 通过文档你可以发现,返回结果是int类型,
// 所以这里用int接收,-1代表读取结束
int len ;
//由于要输出获取的值,需要用循环获取
while ((len = fileInputStream.read()) != -1){
//由于len是数字,需要转换为字符,所以用字符类型接收
System.out.print((char)len);
}
4.如果说该文件内部,还有汉字,那么将会出现乱码,因为这个是一个一个字节读取方式,汉字可能占取3个字节,所以会出现乱码,就不建议使用这种 方式。看演示:
会发现后面的汉字全部变成乱码。所以不能用字节流获取带字符的内容
5.那么我们可以使用另外一种方式,利用数组的形式,一次性获取多个字节,
//创建文件流的对象,用来进行读取
FileInputStream fileInputStream = new FileInputStream(path);
//fileInputStream.read() 通过文档你可以发现,返回结果是int类型,
//定义一个8个大小的空间
byte[] buf = new byte[15];
// 所以这里用int接收,-1代表读取结束
int len ;
//由于要输出获取的值,需要用循环获取
while ((len = fileInputStream.read(buf)) != -1){
//由于len是数字,需要转换为字符,所以用字符类型接收
System.out.print(new String(buf,0,len));
}
通过数组一次性获取多个字节,然后将返回值返回的方式,可以获取文件内的中文