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