java流的分类:
按流向分:输出流:OutputStream和Writer作为基类
输入流:IntputStream和Reader作为基类
按照处理数据单元划分:字节流:字节输入流InputStream基类;字节输出流OutputStream基类
字符流:字符输入流:Reader;字符输出流Writer基类
1.InputStream(抽象类)常用方法
int read();
int read(byte[] b);
int read(byte[] b ,int off,int len);
void close()
int available():可以从流种读取的字节数目
`byte[] bytes = new byte[1024]; //从流中读取数据,将读取的数据存储在你声明的数组中,该方法返回的结果从流中读取到的字节数目 int num =fis.read(bytes); System.out.println(num); //遍历数组,获取读到的数据 for (int i = 0; i < num; i++) { System.out.print((char)bytes[i]); }`
int num; while((num=fis.read())!=-1){ System.out.print((char)num); }
2.FileInputStream(InputStream类的子类)常用构造方法
FileInputStream(File file)
FileInputStream(String name)
1.引入相关的类2.构造文件输入流3.读取文件文本数据4.关闭文件流对象
3.OutputStream类(抽象类)常用方法
void write(int c)
void write(byte[] buf)
void write (byte[] b ,int off,int len)
void close()
void flush():强制把缓冲区的数据写到输出流中
`fos = new FileOutputStream(file, true); fos.write(65); System.out.println("写入完毕");`
4.FileOutputStream(OutputStream类的子类)常用构造方法
FileOutputStream (File file)
FileOutputStream(String name)
FileOutputStream(String name,boolean append)
1.前两种构造方法在向文件写入数据时覆盖文件中原有的内容
2.创建FileOutputStream实例时,如果相应的文件不存在,则自动会创建一个空文件
public static void main(String[] args) { //创建FileInputStream类的对象 FileInputStream fis = null; //创建FileOutputStream类对象输出数据 FileOutputStream fos =null; try { fis = new FileInputStream("D:/a.txt"); fos =new FileOutputStream("D:/demo.txt"); //读取数据然后立马将读取的数据存储到外部文件中 int num; while((num=fis.read())!=-1){ //在这里不需要将读取的数据输出在控制台,而是立马将数据存入到外部文件 fos.write(num); } System.out.println("文件复制完毕"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try { //在一个类中使用了多个流,流的关系是有顺序的:先开的后关,后开的先开 fos.close(); fis.close(); } catch (IOException e) { e.printStackTrace(); } } }
5.Reader类(抽象类)常用方法
int read()
int read(char[] c)
read(char[] c, int off,int len)
void close()
6.InputStreamReader类(Reader类的子类)常用构造方法
InputStreamReader(InputStream in)
InputStreamRander(InputStream in,String charseName)
7.FileReader(InputStreamReader类的子类)常用的构造方法
FileReader(File file)
FileReader(String name)
该类只能按照本地平台的字符编码来读取数据,用户不能指定其他的字符编码类型System.out.println(System.getProperty("file.encoding")); 获得本地平台的字符编码类型
8.BufferedReader类(Reader类的子类)常用的构造方法
BufferedReader(Reader in)
特有的方法:readLine();一行一行的读写 newLine():插入行
9.Writer类(抽象类)常用方法
write(String str)
write(String str,int off,int len)
void close()
void flush()
10.OutputStreamWriter(Writer类的子类)常用的构造方法
OutputStreamWriter(OutputStream out)
OutputStreamWriter(OutputStream out,String charsetName)
11.FileWriter(InputStreamWriter类的子类)常用的构造方法
FileWriter (File file)
FileWriter (String name)
12.BufferedWriter类(Writer类的子类)常用的构造方法
BufferedWriter(Writer out)