概念
某种特定的数据源,如文件、字符串、字符串数组等
节点流中常用类
- 字节输入流 FileInputStream
- 字节输出流 FileOutputStream
- 字符输入流 FileReader
- 字符输出流 FileWriter
字符流
字符输入流Reader
FileReader fr=null;
File file =new File("F:\\1\\2.txt");
fr=new FileReader(file);
char [] c=new char[3];
int len=0;
while((len=fr.read(c))!=-1){
System.out.println(new String(c,0,len));
}
finally{
fr.close();
}
字符输出流
FileWriter fw=null;
fw =new FileWriter("F:\\1\\2.txt",true);
String str="123";
fw.write(str);
finally
{
fw.write(str)
}
字节流
字节输入流InputStream
- FileInputStream
- BufferedInputStream
使用
//声明字节输入流对象
FileInputStream fis=null;
//根据文件的路径,得到一个File对象
File file =new File("F:\\1\\2.txt");
//考虑读取的是一个文本还是视频
文本:FileInputStream或FileReader(字符)
视频:FileInputStream(字节)
fis = new FileInputStream(file);
//做一个字节数组b,用于每次从文件中读取3个大小的字节,然后把读取的字节内容,暂存在b中
byte [] b=new byte[3];
//遍历
int len=0;
while((len=fis.read(b))!=-1){
//字节→字符串,使用String str = new String(byte[]b)
System.out.println(new String(b,0,len))
//0:从第0位开始转换
//len:转换长度
}
finnally
{
Fis.close();//关闭流
}
读取文件中有中文的时候出现乱码,解决办法:
①使用字符流去读取
②java文件的编码方式必须和文件的编码方式相同
字节输出流OutputStream
- FileOutputStream
- BufferedOutputStream
FileOutputStream fos=null;
fos=new FileOutputStream("F:\\1\\2.txt",true);//true 追加,false或不写 替换
String str="ddd";//输出内容
byte[]b=str.getBytes();
//write(byte[])需要一个字节数组,所以我们把要写入的字符串通过getByte()变成字节数组
fos.write(b);
finally{
fos.close();//关闭流对象,否则容易造成内存溢出
}
字节输入流in,转换为字符输入流
InputStreamReader(InputStream in)
字节输出流out,转换为字符输出流
OutputStreamWriter(OutputStream out)