【JAVA】输入输出流

本文转载自Java的输入、输出流详解
1
实际操作:
第一步:创建java文件,创建Main函数,然后在我们的项目目录上创建一个文本文件,用于读取,这里我新建的是data.txt文件,然后需要进行打包,打包完成后创建一个FileReader实例,用于读取文件,这个地方需要进行报异常处理,因为它也有找不到文件的可能。接着,读取文件完毕,我们需要关闭读取,此时我们还需要进行报异常处理,因为它还有可能关闭失败!

package StudyJava;
//没有找到文件报异常包
import java.io.FileNotFoundException;
//使用FileReader读文件前需要先打包
import java.io.FileReader;
//关闭失败,报错包
import java.io.IOException;
public class Program
{
public static void main(String[] args)
{
//创建一个读文件的fr变量
FileReader fr = null;
//读文件,此时,需要进行报异常处理。因为,你不能确定这个文件是否能找到!
try
{
//FileReader(String 路径)
fr = new FileReader("data.txt");
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
//最后关闭读取
finally
{
//关闭fr读文件操作,如果fr!=null,也就是读到了文件
if(fr!=null)
{
//此时还需要进行报异常处理,因为你不能确定fr一定能够关闭
try
{
//关闭
fr.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
}
}

第二步:做完上面之后,我们需要在创建一个以默认大小输入缓冲区的缓存字符流BufferedReader,这个能够方便我们将得到的数据存储在变量中,然后将存储数据的变量打印,这样就能够看到我们data.txt文件中的内容了。最后,我们关闭读取,这里我们不需要对FileReader进行关闭,应该他是下层流,BufferedReader是上层流,所以可以直接通过关闭BufferedReader对下层流进行关闭。
package StudyJava;
import java.io.BufferedReader;
//没有找到文件报异常包
import java.io.FileNotFoundException;
//使用FileReader读文件前需要先打包
import java.io.FileReader;
//关闭失败,报错包
import java.io.IOException;
public class Program {
public static void main(String[] args)
{
//创建一个读文件的fr变量
FileReader fr = null;
//创建一个使用默认大小输入缓冲区的缓存字符流
BufferedReader br = null;
//读文件,此时,需要进行报异常处理。因为,你不能确定这个文件是否能找到!
try
{
fr = new FileReader("data.txt");
//将读到的文件放到BufferedReader,放到这里能让读到的字符一个一个的输入
br = new BufferedReader(fr);
//创建一个数组,用于存放br
String strLine;
//在创建一个数组,存放所有值
String str = "";
//创建一个while循环,将br的值赋给str,如果当读取完毕之后退出循环,在赋值的时候,读着读着也有可能报错,所以还需要进行报异常处理
while((strLine = br.readLine())!=null)
{
str+=strLine+"\r\n";
}
//打印读到的文件的数据
System.out.println(str);
}
//找不到文件报异常处理
catch (FileNotFoundException e)
{
e.printStackTrace();
System.out.println("这里出现了抛异常");
}
//读取文件报异常处理
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//最后关闭读取
finally
{
//因为关闭上层流会关闭底层流,所以我们只需要对br进行关闭
try
{
if(br!=null)
br.close();
}
//报异常处理
catch(IOException e)
{
e.printStackTrace();
}
}
}
}

结果如下图所示:
1
输出流
实际操作:这里我将代码列出来,输出流和输入流其实相差不多,这里我们将之前在data.txt文件中读到的数据写进data2.txt,大家看代码就能懂,输出流我们用的是FileWrite来读文件数据,然后将FileWrite中读到的数据放入缓存区BuffedReader,代码如下:

package StudyJava;
import java.io.BufferedReader;
import java.io.BufferedWriter;
//没有找到文件报异常包
import java.io.FileNotFoundException;
//使用FileReader读文件前需要先打包
import java.io.FileReader;
import java.io.FileWriter;
//关闭失败,报错包
import java.io.IOException;
public class Program {
public static void main(String[] args)
{
//创建一个读文件数据的fr变量
FileReader fr = null;
//创建一个使用默认大小输入缓冲区的缓存字符流
BufferedReader br = null;
//创建一个传递数据的fw变量
FileWriter fw = null;
//创建缓冲区
BufferedWriter bw = null;
//读文件,此时,需要进行报异常处理。因为,你不能确定这个文件是否能找到!写文件,同理
try
{
fr = new FileReader("data.txt");
//将读到的文件放到BufferedReader,放到这里能让读到的字符一个一个的输入
br = new BufferedReader(fr);
//将文件写在data2.txt中
fw = new FileWriter("data2.txt");
//放在缓冲区
bw = new BufferedWriter(fw);
//创建一个数组,用于存放br
String strLine;
//在创建一个数组,存放所有值
String str = "";
//创建一个while循环,将br的值赋给str,如果当读取完毕之后退出循环,在赋值的时候,读着读着也有可能报错,所以还需要进行报异常处理
while((strLine = br.readLine())!=null)
{
str+=strLine+"\r\n";
//将要传递的数据输出出去
bw.write(strLine);
}
//打印读到的文件的数据
System.out.println(str);
}
//找不到文件报异常处理
catch (FileNotFoundException e)
{
e.printStackTrace();
System.out.println("这里出现了抛异常");
}
//读取文件报异常处理
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//最后关闭读取
finally
{
//因为关闭上层流会关闭底层流,所以我们只需要对br进行关闭
try
{
if(br!=null)
br.close();
if(bw!=null)
bw.close();
}
//报异常处理
catch(IOException e)
{
e.printStackTrace();
}
}
}
}

1

blank