几种创建文件对象的方式:绝对路径,相对路径,父目录
1.流的建立(文件流)
文件输入流:FileInputStream=new FileInputStream(f);
文件输出流:FileOutputStream=new FileOutputStream(f);
1.①字节流的读写
拿代码来说明:
创建一个长度为文件长度的字节数组byte[] b=new byte[(int)f.length()];
用字节流的形式将文件内容读入字节数组fis.read(b);
用字节流的形式将内容写入文件 fos.write(b);
*1.②字符流的读写
/*这段代码是创建一个字符输入流,将文件f里的内容读入到all字符数组中*/ try(FileReader fr=new FileReader(f)) { char[] all=new char[(int)f.length()]; fr.read(all); } catch (IOException e) { e.printStackTrace(); } /*这段代码是将字符写入文件 */ try(FileWriter fw=new FileWriter(f)){ char[] cs=str.toCharArray //假设str是一个已赋值的字符串 fw.writer(cs); } catch (IOException e) { e.printStackTrace(); }
1.③缓存流的读写(必须建立在一个存在的流的基础上)
try( FileReader fr=new FileReader(f);//字符输入流 BufferedReader br=new BufferedReader(fr);//在字符流的基础上创建一个缓存输入流 FileWriter fw=new FileWriter(f);//字符输出流 PrintWriter pw=new PrintWriter(fw);//在字符 ){ while(true){ String line=br.readLine(); if(line==null){break;} } }
2.关闭流的方式
所有的流,无论是输入流还是输出流,使用完毕之后,都应该关闭。 如果不关闭,会产生对资源占用的浪费。 当量比较大的时候,会影响到业务的正常开展。
①在try中关闭:如果文件不存在,或者读取的时候出现问题而抛出异常,那么就不会执行这一行关闭流的代码,存在巨大的资源占用隐患。 不推荐使用,所以不做赘述
②在finally中关闭(标准的关闭方式):
在tyr块外创建流,如果在tyr中声明流,其作用域无法到达finally块中:FileInputStream=null;
在finally中关闭: java finally{ //判断是否为空 if(fis!=null){ //再进行一次trycatch处理 try{fis.close();} catch(IOException e){e.printStackTrace;}}}
③在try中声明流,try,catch或者finally结束的时候,会自动关闭,这种编写代码的方式叫做 try-with-resources, 这是从JDK7开始支持的技术:
try(FileInputStrean fis=new FileInputStream(f); FileOutputStream fos=new FileOutputStream(f);) { /*此处代码就不举例了*/ } catch(IOException e){ e.printStackTrace(); }
未完待续