day20 java 语言中的读取写入数据(一)
一、io概述
io数据流的读写功能,在实际的生活中也很常见,比如文件的上传、下载,日志的自动更新等都与io读写密切相关。io又被分为了读取数据和写入数据两个大的功能。下面就来看看读取数据的几种类。
二、读取数据的几种方式
读取数据被分为了字节流读取数据,和字符流读取数据两种。
(一):字符输入流:
1、fileReader类。是字符流读取数据
2、BufferedReader类。带有缓冲流读取数据
(二):字节输入流:
1、FileInputStream类。是字节流读取数据
2、BufferedInputStream。是带有缓冲流读取数据
三、具体实例
(一)字符流读数据
//io数据流输入读取【FileReader】
package www.com.c1;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Io02 {
public static void main(String[] args) {
try {
//1、创建使用字符流实例
FileReader fileReader = new FileReader("D:\\zs.txt");
//2、定义变量接收读取到的
int temp = 0;
//3、定义字符来转换。
char c;
//4、循环打印
while ((temp = fileReader.read())!=-1) {
c =(char) temp;
System.out.print(c);
}
//5、关闭数据流
fileReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//io数据流输入读取【BufferedReader】
package www.com.c1;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Io04 {
public static void main(String[] args) {
try {
//1、创建实例,
BufferedReader buf =
new BufferedReader(new FileReader("D:\\zs.txt"));
//2、定义字符串来接收
String temp;
//3、使用readline来读取数据,注意他是读取的一行字符串
while ((temp = buf.readLine())!=null) {
System.out.println(temp);
} //4、关闭数据流
buf.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
(二)字节流读数据
package www.com.c1;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
//io数据流输入读取【FileInputStream】
//1、FileInputStream:字节流读取文件:一般读取一些图片、视频等等。
// 字符流读取文件:一般都是一些文字。
public class Io01 {
public static void main(String[] args) {
//使用第一种方式【字节流】读取文件。
try {
//1步:创建输入字节流实例,注意后面的文件存放的位置路径
FileInputStream inputStream01 = new FileInputStream("D:\\zs.txt");
//2步、定义变量来接受每一次读取到的数据
int tmp;
//4、定义变量来转换打印读到的是什么。
char ok;
//3、使用while循环来读取文件的内容:核心步骤
while ((tmp=inputStream01.read())!=-1) {
ok = (char) tmp;//使用强制类型转换
System.out.print(ok);
}
//5、关闭数据流
inputStream01.close();
} catch (FileNotFoundException e) {
System.out.println("文件不存在!请在改路径下建立该文件!");
} catch (IOException e) {
e.printStackTrace();
}
//使用第二种方式读取文件。 【使用字节流读取中文】
try {
//1、创建读取文件的实例
FileInputStream inputStream = new FileInputStream(new File("D:\\zs.txt"));
//2、定义数组来控制每次读取到的数据量【类似于缓存】
byte[] b = new byte[1024];
//3、定义变量来接收读取到的数据
int a;
//4、使用read[byte]方法读取数据
while ((a = inputStream.read(b))!=-1) {
//5、创建字符串来接收处理读取到的数据,
String s = new String(b, 0, a);
//注意各个参数,参数一:代表每次读取的最大数据量
//参数二:代表读取数据的偏移量,就是从哪个字节开始读取剩下的数据
//参数三:读取字节的数据。
//6、输出
System.out.println(s);
}
//7、关闭数据流
inputStream.close();
} catch (FileNotFoundException e) {
System.out.println("文件不存在");
} catch (IOException e) {
e.printStackTrace();
}
}
}
//io数据流输入读取【BufferedInputStream】
package www.com.c1;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Io03 {
public static void main(String[] args) {
try {
//1、创建BufferedInputStream实例,只能传一个输入流,所以在创建的时候都会创建输入流的父类或者子类。
BufferedInputStream bis =
new BufferedInputStream(new FileInputStream("D:\\zs.txt"));
//2、定义变量接收读取到的
int temp = 0;
//3、定义字符来转换。
char c;
//4、循环打印
while ((temp = bis.read())!=-1) {
c =(char) temp;
System.out.print(c);
}
//5、关闭数据流
bis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
四、结束语
都这儿关于使用IO流读取文件的常用4个方法就说完了。注意一下在这4个实例中的应用。
转载于:https://blog.51cto.com/dzx123/1980870