//IO:输入输出流 (读入写出)
/*
* 使用文件字节流将数据读取到程序
*/
public class TestFileInputStream {
public static void main(String[] args) throws IOException {
//先准备文件对象 f就是将要被读取的源文件
File f = new File("file/abc.txt");
//准备字节输入流对象
FileInputStream fis = null;
try {
//将源文件f转化成字节输入流
fis = new FileInputStream(f);
//从流中获取数据 读取一个字节
// int read = fis.read();
//一次性读取一个字节数组
//先准备一个空杯子
byte[]bs = new byte[(int)f.length()];
//将流中的数据存储到bs中
fis.read(bs);
//将字节数组中的数据展示 (将字节数组转字符串)
String str = new String(bs);
System.out.println(str);
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
fis.close();
}
}
}
//--------------------------------------------------------------------------
/*
* 将程序中的数据写入到文件中
*/
public class TestFileOutputStream {
public static void main(String[] args) {
//创建一个目标文件。 一会将数据写到f中
File f = new File("file/def.txt");
FileOutputStream fos = null;
//准备文件输出流
try {
//创建一个文件输出流对象,并指定将要把数据写到哪个文件中
//FileOutputStream(f,true)//f代表目标文件,true代表是否追加
fos = new FileOutputStream(f,true);
//将数据写入到文件中
String str = "小明,今天天气\n怎么样?";
//先将字符串转字节数组
byte[] bs = str.getBytes();
//将字节数组中的数据写入到文件中
fos.write(bs);
//刷缓存
fos.flush();
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(null!=fos){
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//-------------------------------------------------------------------------
/**
* 使用缓冲流读取数据
*/
public static void main(String[] args) {
BufferedReader br = null;
try {
//创建一个缓冲流对象,指定要读取的文件
br = new BufferedReader(
new FileReader(
new File("file/abc.txt")));
//对文件进行操作
String str = br.readLine();//直接读取一行数据
while(str!=null){//不为空就循环读取
System.out.println(str);
str = br.readLine();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(null!=br){
try {
//只需要关闭缓冲流对象,FileReader对象一同被关闭,不需要再手动关闭
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
//----------------------------------------------------------------------------------
/**
* 使用字符缓冲流,对文件进行读写(复制)
*/
public static void main(String[] args) {
//先将文件file/def.txt中的数据读取出来
BufferedReader br = null;
//缓冲输出流对象
BufferedWriter bw = null;
try {
/* File file = new File("file/def.txt");
//要有FileReader对象,就需要先有文件对象
FileReader fr = new FileReader(file);
//要创建缓冲流对象,必须先有Reader对象
br = new BufferedReader(fr);*/
//构建文件输入流对象
br = new BufferedReader(
new FileReader(
new File("file/def.txt")));
//构建文件输出流对象,指定将数据写到d盘中aaa.txt中
bw = new BufferedWriter(
new FileWriter(
new File("D:/aaa.txt")));
//使用缓冲流读取一行数据
String str = br.readLine();
while(str!=null){
//直接将上面代码读取的字符串写到文件中
bw.write(str);
bw.newLine();//换行
bw.flush();//刷流
//继续读取数据
str = br.readLine();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
//先进后出
if(bw!=null){
bw.close();
}
if(br!=null){
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//-------------------------------------------------------------------------------
/**
*
* @author Administrator
字符输入流:
以reader结束的流的类一定是字符输入流
FileReader:文件字符流
BufferedReader:缓冲字符流
*/
public class TestReader {
public static void main(String[] args) {
//创建字符输入流对象
FileReader fr = null;
try {
//创建字符输入流对象,并指定操作的是哪一个文件对象
fr = new FileReader(new File("file/abc.txt"));
//使用字符输入流读取数据
// int read = fr.read();//读取一个字符
//准备一个字符数组
char[]chs = new char[10];
//将数据读取到字符数组中,len代表读取到数组中字符的个数
int len = fr.read(chs);
//循环将数据都读取出来
while(len!=-1){//len=-1代表读取到了文件的末尾
//将每一次读取到字符数组中的数据转成字符串
// 从数组的第一个元素开始,len代表数组中字符的个数
String str = new String(chs,0,len);
System.out.println(str);
//继续循环读取
len = fr.read(chs);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(null!=fr){
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
//----------------------------------------------------------------------------------
/*
* 配置文件的读取和使用
* properties文件中key和value都是String类型
*
* */
public class TestProper {
public static void main(String[] args) {
FileInputStream fis = null;
Properties pp = null;
try {
//构建一个输入流对象
fis = new FileInputStream("file/abc.properties");
//创建properties对象
pp = new Properties();
//使用配置文件对象,将流加载进行
pp.load(fis);
//从pp中获取数据
String name = pp.getProperty("name");
String age = pp.getProperty("age");
String hobbys = pp.getProperty("hobby");
//将爱好hobbys分成几个独立的部分 “跳舞,吃饭,唱歌”
String[] hobs = hobbys.split(",");
System.out.println(name+age+hobbys);
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
回顾以前学的
(每天坚持写博客)
转载于:https://blog.51cto.com/flyblog/1755389