java面向对象第十章
文件:存储相关记录或放在一起的数据的集合。
导入文件需要导入一个包: java.io.*;
File创建对象时需要关联一个字符串:
File f=new File("[放入文件的路径关联指定的文件名或目录名]")
显示目录下所以的文件或目录:File [] files=对象名.listFiles();<输出既包括文件有包括文件夹>
可通过 isFile方法判断是否为文件
1kb=1024b(字节) 1MB=1024kb
执行删除操作时删除文件夹时,文件夹里面有子文件时不能删除。
public static void main(String [] args ){ File file=new File("D:\\Test\\hello.txt"); if(file.exists()){ //判断是否有文件或文件夹存在 if(file.isFile()){ //如果是文件 System.out.println("名称:"+file.getName()); System.out.println("相对路径:"+file.getPath()); System.out.println("绝对路径:"+file.getAbsolutePath()); System.out.println("文件大小为:"+file.length()); } if(file.isDirectory()){ System.out.println("此文件为目录或文件夹!"); }else{ System.out.println("文件不存在!"); } } } File读取文件操作
递归算法:《方法直接或间接调用自己》
public static void main(String [] args){ // File file=new File("D:\\Test"); // showInfo(file); //非菠萝契数列:1 1 2 3 5 8 ...... //int [] muns=new int[10]; //定义数组 Scanner input=new Scanner(System.in); System.out.println("请输入您要计算的位置:"); int a=input.nextInt(); System.out.println(suan(a-1)); } private static void showInfo(File f){ File [] file=f.listFiles(); for(int i=0;i<file.length;i++){ System.out.println(file[i].getName()); //得到一级目录中的文件和文件夹 if(file[i].isDirectory()){ //判断一级目录中是否含有文件夹 showInfo(file[i]);//调用自己方法 } } } private static int suan(int i){ if(i==0 || i==1){ return i=1; }else{ return suan(i-2)+suan(i-1); } } 递归算法
Java中的流:
1.字节流: InputStream(输入流:读取文件) InputStream input=new FileInputStream(对象名或文件路径) <不能直接new>【不能显示中文】
OutputStream(输出流:写入文件) OutputStream output=new FileOutPutStream(对象名或文件路径) <不能直接new>【写入文件会覆盖原文件或者会新建新文件】
public static void main(String [] args) throws Exception{ // //声明流对象 // FileInputStream fis=null; // try { // fis =new FileInputStream("D:\\Test\\hello.txt"); // int data; // System.out.println("文件内容为:"); // // //循环读取数据 // // while((data=fis.read())!=-1){ // System.out.print((char)data+""); // } // }catch (FileNotFoundException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // catch (IOException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // // } finally { // if(fis!=null){ // try { // fis.close(); // } catch (IOException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // } // } FileInputStream
public static void main(String [] args){ OutputStream fos=null; try { String str="好好学习java"; String a="每天"+10+"分钟"; byte [] words= str.getBytes(); //字节数组 //创建流的对象,以追加方式写入文件 fos=new FileOutputStream("D:\\Test\\test.txt"); //写入文件 try { fos.write(words); fos.write(a.getBytes()); System.out.println("Test文件已更新!"); } catch (IOException e) { System.out.println("文件创建时失败!"); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } OutputStream
2.字符流:Rearder(字符输入流:读取文件) Rearder fr=new FileRearer(对象名或文件路径) 【可以显示中文】
BufferedReader字符输入流:读取文件) BufferedReader br=new BufferedReader(只能放Rearder的对象名);
BufferedReader的效率比Rearder高些。
Writer(字符输出流:写入文件) Writer fr=new File Writer(对象名或文件路径)
public static void main(String [] args){ Reader fr=null; StringBuffer sbf=null; try { fr=new FileReader("D:\\Test\\test.txt"); sbf=new StringBuffer(); int length; while((length=fr.read())!=-1){ char c=(char)length; sbf.append(c); } System.out.println(sbf.toString()); //输出数据 } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(fr!=null){ try { fr.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } Reader
public static void main(String [] args){ Reader fr=null; BufferedReader br=null; try { //先创建一个FileReader对象 fr=new FileReader("D:\\Test\\test.txt"); //在创建一个BufferedReader对象 br=new BufferedReader(fr); //读取每一行数据 String line=br.readLine(); while(line!=null){ System.out.println(line); line=br.readLine();//再次赋值进行判断 } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { br.close(); //先关 fr.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } BufferedReader
public static void main(String [] args){ Writer fw=null; try { //创建一个FileWrite对象 fw=new FileWriter("D:\\Test\\简介.txt"); //写入信息 fw.write("我热爱我的团队!"+"\r\n"); fw.write("张三"+"\r\n"); //\r\n进行换行 fw.write("18岁"); fw.flush(); //刷新缓冲区 } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { fw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } Writer
3.DataInputStream字节流来输出二进制的文件 是filterInputStream的子类
DataOutPutStream字节流来写入二进制的文件 是filterOutputStream的子类
二进制文件(乱码)能够增强文件的安全性
实体类 可实现一个序列化操作的接口 做数据传递的载体 二进制(0和1)、XML形式(标记《可跨平台跨语言》)