本帖最后由 小石姐姐 于 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();
}
}
|