A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2019-5-9 18:30 编辑

个人笔记一、File类概述和构造方法File类的作用
概念:文件和目录名路径的抽象表示形式。      
File封装的并不是一个真正存在的文件。     
仅仅是一个路径名,它可以存在,也可以不存在。      
后面需要通过对应的方法将其变成真正存在的。
File类的构造方法
[Java] 纯文本查看 复制代码
File(String pathName)                根据字符串路径创建一个File对象(文件完整路径)     
File(String parent,String child)   根据字符串父级路径(目录路径)和子级路径(文件名)创建File对象      
File(File parent,String child)       根据File类型父级路径(目录路径)和字符串子级路径(文件名)创建File对象
二、File类创建功能
[Java] 纯文本查看 复制代码
boolean createNewFile()       创建一个新文件,File类的对象file调用该方法 ,如果没有返回true,有则返回false     
boolean mkdir()                     创建单级文件夹(目录),File类的对象file调用该方法 ,如果没有返回true,有则返回false            
boolean mkdirs()                   创建多级文件夹(目录),File类的对象file调用该方法  ,如果没有返回true,有则返回false         
三、File类判断和获取功能File类的判断方法
[Java] 纯文本查看 复制代码
boolean isDirectory()        判断是否是文件夹(目录)      
boolean isFile()                判断是否是文件      
boolean exists()                判断文件是否存在
File类的获取方法
[Java] 纯文本查看 复制代码
String getAbsolutePath()        获取绝对路径     
String getPath()                获取构造方法中的路径(相对路径)     
String getName()                获取文件或文件夹(目录)的名称     
String[] list()                获取目录下所有内容(文件和目录),返回字符串数组     
File[] listFiles()        获取目录下所有内容(文件和目录),返回File对象数组
四、File类删除功能File类的删除方法
[Java] 纯文本查看 复制代码
boolean delete()                删除文件或文件夹(文件夹必须为空),如果该文件或文件夹(目录)不存在,删除不成功
绝对路径和相对路径
绝对路径:完整的路径,从盘符开始      
相对路径:相对于当前项目工作空间下
五、递归什么是递归?
递归指的是方法本身自己调用自己
递归的注意事项?
递归必须要有出口 (限制)   
递归的次数不宜过多,否则都会造成内存溢出
不死神兔递归版本
1.定义一个方法,接收一个数字     
2.方法中进行判断该数字是否是1或2,如果是返回1     
3.否则返回调用当前方法传递数字-1加上调用当前方法传递数字-2(n=(n-1)+(n-2))
  
[Java] 纯文本查看 复制代码
public class Test{
      public static void main(String[] args){
          sout(f(20));//6765
      }
      public static int f(int n){
          if(n==1 || n==2){
              return 1;
          }else{
              return (n-1)+(n-2);
          }
      }
  }

六、递归求阶乘递归求阶乘的重要步骤
1.定义一个方法,用于递归求阶乘,参数为一个int类型的变量     
2:在方法内部判断该变量的值是否是1         
​        是:返回1            
​        不是:返回n*(n-1)的阶乘     
3:调用方法  
4:输出结果
  
[Java] 纯文本查看 复制代码
 public class Test{
      public static void main(String[] args){
          sout(f(5));//120
      }
      public static int f(int n){
          if(n==1){
              return 1;
          }else{
              return n*f(n-1);
          }
      }
  }

七、遍历目录  
[Java] 纯文本查看 复制代码
public class Test{
      public static void main(String[] args){
          File file = new File("day08");
          getFile(file);
      }
      public static void getFile(File file){
          File file1 = file.listFiles();
          if(file1.isDirectory){
              getFile(file1);
          }else{
              sout(file);
          }
      }
  }

  ​八、IO流概述和分类
什么是IO流(数据传输)
用于操作计算机硬盘和内存中的文件数据
IO流的分类
字节流和字符流(输入流(读取数据)和输出流(写入数据))
IO流的使用场景
如果操作的是纯文本文件(里面包含中文,能看懂的内容),优先使用字符流     
如果操作的是二进制文件,优先使用字节流     
如果不确定,则优先使用字节流
九、字节流写数据字节流写数据的重要步骤
1.创建FileOutputStream对象,关联到一个文件路径 (例如:day08\ceshi.txt)     
2.调用write()方法,写出数据(write(byte by),在记事本打开会默认转成字符:97--a)      
3.调用close()方法,释放资源      
4.打开文件,查看内容
十、字节流写输入的三种方式
[Java] 纯文本查看 复制代码
write(int b)                        一次写一个字节数据      
write(byte[] arr)                         一次写一个字节数组      
write(byte[] arr,int index,int len)     写字节数组的一部分(在arr数组中,从index索引开始,写入len个长度)
  
  package outputstream;
  ​
  import java.io.FileOutputStream;
  import java.io.IOException;
  ​
  public class FileOutputStreamTest1 {
      public static void main(String[] args) throws IOException {
          //创建了文件字节数出流对象,创建了指定的文件,创建了文件字节数出流对象指向这个文件的通道
          FileOutputStream fos = new FileOutputStream("day08\\ceshi.txt");
  //        fos.write(97);
  //        byte[] bys = {91,98,99,100,101};
          byte[] bys = "itheima".getBytes();
          //write(byte[] bys);将字节数组写入到指定的文件中
          fos.write(bys);
          //write(byte[] bys,int off ,int len);将字节数组按照从off索引开始,写入len长度的字节,写入到指定的文件中
  //        fos.write(bys,1,3);
          //释放资源
          fos.close();
      }
  }
  ​十一、字节流写数据的两个小问题
如何写换行
调用write()方法,写出”\r\n”.getBytes()(该方法是把字符串转成字符数组)即可
  
   
[Java] 纯文本查看 复制代码
FileOutputStream fos = new FileOutputStream("day08\\ceshi.txt",true);
          for (int i = 0; i < 10; i++) {
              fos.write("hello".getBytes());
              fos.write("\r\n".getBytes());
          }
          fos.close();

如何文件续写
使用FileOutputStream(String name,boolean append)构造方法     
构造方法中第二个参数传递true,则可以在文件末尾继续写数据
[Java] 纯文本查看 复制代码
 FileOutputStream fos = new FileOutputStream("day08\\ceshi.txt",true);

十二、字节流写数据加异常处理字节流写数据同时处理异常的重要步骤
1.将创建字节流对象和写出数据的代码放在try中     
2.在catch中捕获IOException异常     
3.在finally中进行释放资源
  
[Java] 纯文本查看 复制代码
 package outputstream;
  ​
  import java.io.FileOutputStream;
  import java.io.IOException;
  ​
  public class FileOutputStreamTest2 {
      public static void main(String[] args) {
          FileOutputStream fos = null;
          try {
  //            fos = new FileOutputStreamTest3("Q:\\day08\\ceshi.txt");//FileNotFoundException
              fos = new FileOutputStream("day08\\ceshi.txt");
              fos.write("ab".getBytes());
          }catch(IOException io){
              io.printStackTrace();
          }finally{
              //为了解决空指针异常
              if (fos != null) {
                  try {
                      //不光程序出不出异常,都会执行释放资源
                      fos.close();
                  } catch (IOException e) {
                      e.printStackTrace();
                  }
              }
          }
      }
  }

  ​十三、字节流读数据(一次读一个字节数据)  
  
[Java] 纯文本查看 复制代码
package inputstream;
  //用一次读取一个字节读取文件
  import java.io.FileInputStream;
  import java.io.IOException;
  ​
  public class FileInputStreamTest1 {
      public static void main(String[] args) throws IOException {
          FileInputStream fis = new FileInputStream("day08\\ceshi.txt");
          /*int by = fis.read();
          System.out.print((char)by);
          by = fis.read();
          System.out.print((char)by);
          by = fis.read();
          System.out.print((char)by);
          by = fis.read();
          System.out.print((char)by);
          by = fis.read();
          System.out.print((char)by);*/
          int by;
          while ((by=fis.read()) != -1){
              System.out.print((char)by);
          }
          fis.close();
      }
  }

  ​十四、字节流复制文本文件  
[Java] 纯文本查看 复制代码
 package copytest;
  //复制文本文件,用一次读取一个字节来读取文本,并且用来写入到一个新文本
  import java.io.FileInputStream;
  import java.io.FileOutputStream;
  import java.io.IOException;
  ​
  public class CopyTest {
      public static void main(String[] args) throws IOException {
          FileInputStream fis = new FileInputStream("F:\\黑马Java\\就业班课程\\就业班se\\day08\\素材\\itcast\\窗里窗外.txt");
          FileOutputStream fos = new FileOutputStream("day08\\窗里窗外.txt");
  ​
          int by;
          while((by=fis.read()) != -1){
              fos.write(by);
          }
  ​
          fos.close();
          fis.close();
      }
  }

  ​十五、字节流读数据(一次读一个字节数组数据)  
  
[Java] 纯文本查看 复制代码
package inputstream;
  //用一次读取一个字节数组来读取文本
  import java.io.FileInputStream;
  import java.io.IOException;
  ​
  public class FileInputStreamTest2 {
      public static void main(String[] args) throws IOException {
          FileInputStream fis = new FileInputStream("day08\\ceshi.txt");
          /*byte[] bys = new byte[5];
          int len = fis.read(bys);
          System.out.println(len);
          System.out.println(new String(bys));//hello
          len = fis.read(bys);
          System.out.println(len);
          System.out.println(new String(bys));//\r\nwor
          len = fis.read(bys);
          System.out.println(len);
          System.out.println(new String(bys));//ld\r\nr*/
          byte[] bys = new byte[1024];//长度一般是1024及其整数倍数
          int len;
          while ((len=fis.read(bys)) != -1){
              System.out.print(new String(bys,0,len));
          }
          fis.close();
      }
  }

  ​十六、字节流复制图片  
[Java] 纯文本查看 复制代码
 package copytest;
  //复制图片,用一次读取一个字节数组来读取图片,并且写入到一个新图片
  import java.io.FileInputStream;
  import java.io.FileOutputStream;
  import java.io.IOException;
  ​
  public class CopyJPGTest {
      public static void main(String[] args) throws IOException {
          FileInputStream fis = new FileInputStream("F:\\黑马Java\\就业班课程\\就业班se\\day08\\素材\\itcast\\mn.jpg");
          FileOutputStream fos = new FileOutputStream("day08\\mn.jpg");
  ​
          byte[] bys = new byte[1024];
          int len;
          while((len = fis.read(bys)) != -1){
              fos.write(bys,0,len);
          }
          fos.close();
          fis.close();
      }
  }
  ​



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马