java 如何读取文件并转换成FileItem java读取文件到string_java string io

aluckdog

一、超类: 字节流: InputStream(读入流) OutputStream(写出流) 字符流:    Reader(字符 读入流)    Writer (字符写出流)二、文件操作流 字节流: FileInputStream  ,FileOutputStream 字符流: FileReader, FileWriter(用法与字节流基本相同,不写)//1.指定要读 的文件目录及名称File file =new File("文件路径");//2.创建文件读入流对象FileInputStream fis =new FileInputStream(file);//3.定义结束标志,可用字节数组读取int i =0 ;while((i = fis.read())!=-1){//i 就是从文件中读取的字节,读完后返回-1}//4.关闭流fis.close();//5.处理异常//1.指定要写到的文件目录及名称File file =new File("文件路径");//2.创建文件读入流对象FileOutputStream fos =new FileOutputStream(file);//3.定义结束标志fos.write(要写出的字节或者字节数组);//4.刷新和关闭流fos.flush();fos.close();//5.处理异常三、缓冲流: 字节缓冲流: BufferedInputStream,BufferedOutputStream 字符缓冲流:BufferedReader ,BufferedWriter缓冲流是对流的操作的功能的加强,提高了数据的读写效率。既然缓冲流是对流的功能和读写效率的加强和提高,所以在创建缓冲流的对象时应该要传入要加强的流对象。//1.指定要读 的文件目录及名称File file =new File("文件路径");//2.创建文件读入流对象FileInputStream fis =new FileInputStream(file);//3.创建缓冲流对象加强fis功能BufferedInputStream bis =new BufferedInputStream(fis);//4.定义结束标志,可用字节数组读取int i =0 ;while((i = bis.read())!=-1){//i 就是从文件中读取的字节,读完后返回-1}//5.关闭流bis.close();//6.处理异常//1.指定要写到的文件目录及名称File file =new File("文件路径");//2.创建文件读入流对象FileOutputStream fos =new FileOutputStream(file);//3.创建缓冲流对象加强fos功能BufferedOutputStream bos=new BufferedOutputStream(fos);//4.向流中写入数据bos.write(要写出的字节或者字节数组);//5.刷新和关闭流bos.flush();bos.close();//6.处理异常四、对象流ObjectInputStream ,ObjectOutputStream不同于以上两种类型的流这里只能用字节对对象进行操作原因可以看上篇的编码表比照原理ObjectOutputStream对象的序列化:将java程序中的对象写到本地磁盘里用ObjectOutputStream eg:将Person类的对象序列化到磁盘创建Person类注1:此类要实现Serializable接口,此接口为标志性接口注2:此类要有无参的构造函数注3:一旦序列化此类不能再修改class Person implements Serializable{public Person(){}}2.创建对象流对象注:要增强功能可以将传入文件缓冲流ObjectOutputStream oos =new ObjectOutputStream(new FileOutputStream(new File("文件路径")));3.写入对象 ,一般会将对象用集合存储起来然后直接将集合写入文件List list =new ArrayList<>();list.add(new Person());...(可以添加多个)oos.writeObject(list);4.关闭流,处理异常oos.flush();oos.close();五、转换流:这类流是用于将字符转换为字节输入输出,用于操作字符文件,属于字符流的子类,所以后缀为reader,writer;前缀inputstream,outputstream;注 :要传入字节流作为参赛InputStreamReader: 字符转换输出流OutputStreamWriter:字符转换输入流//1.获取键盘输入的字节流对象inInputStream in =Stream.in; /*2.用转换流将字节流对象转换为字符流对象,方便调用字符缓冲流的readeLine()方法*/InputStreamReader isr =new InputStreamReader(in);/*5.创建字符转换输出流对象osw,方便把输入的字符流转换为字节输出到本地文件。*/OutputStreamWriter osw =new OutputStreamWriter(newFileOutputStream(new File("文件名"))); /*3.现在isr是字符流,可以作为参数传入字符缓冲流中*/BufferedReader br =new BufferedReader(isr);/*4.可以调用字符缓冲流br的readLine()方法度一行输入文本*/String line =null;while((line =br.readLine()){osw.write(line);//osw是字符流对象,可以直接操作字符串}注:InputStreamReader isr =new InputStreamReader(new "各种类型的字节输入流都行即是:后缀为InputStream就行");OutputStreamWriter osw =new OutputStreamWriter(new"后缀为OutputStream就行"); 六、区别记忆1.对象流是可以读写几乎所有类型的只要是对象就行,而字节字符流,只能读写单个字节字符或者字节字符数组,以上没有读写字节字符数组的;注意对象流只有字节流!2.字符和字节循环读入的结束条件int i=0; (i =fis.read())!=-1用字符数组复制文件(fr 读入流 ,fw写出流),字节流也是相同的用法int i = 0;  char[] c = new char[1024];while((i = fr.reade()) !=-1)){fw.write(c,0,i);}1234563.对象流里面套缓冲流的情景: new ObjectInputStream(new BufferedInputStream(new FileInputStream(new File(“文件路径”))));4.记忆流及其功能的方法:前缀表示功能,后缀表示流的类型;比如说FileInputStream  前缀:File,表示操作的磁盘,后缀:intputstream,表示是字节输入流。同理 FileReader:表示操作文件的字符流ObjectInputStream :操作对象的字节输入流5.拓展:获取键盘输入的字符的缓冲流的写法: new BufferedReader(new InputStreamReader(System.in))); 将字节以字符形式输出到控制台的字符缓冲流的写法: new BufferedWriter( new OutputStreamWriter(System.out))