首页 > 其他分享 >字符字节流

字符字节流

时间:2022-12-14 20:36:55浏览次数:36  
标签:字符 file String 路径 static File public 字节


今日内容介绍
1、File
2、递归

=第一节课开始=======================

###01IO技术概述.avi(02:49)
* A:IO技术概述
* a: Output
* 把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作
* b: Input
* 把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作
* c: IO操作
* 把上面的这种输入和输出动作称为IO操作

###02File类的概述和作用
* A:File类的概述和作用
* a: File的概念
* File类是文件和目录路径名的抽象表示形式
* Java中把文件或者目录(文件夹)都封装成File对象
* 我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可

###03File类静态的成员变量
* A:File类静态的成员变量
* a: pathSeparator
* 与系统有关的路径分隔符,为了方便,它被表示为一个字符串
* b: separator
* 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串

* c: 案例代码

/*
* java.io.File
* 将操作系统中的,文件,目录(文件夹),路径,封装成File对象
* 提供方法,操作系统中的内容
* File与系统无关的类
* 文件 file
* 目录 directory
* 路径 path
*/
public class FileDemo {
public static void main(String[] args) {
//File类静态成员变量
//与系统有关的路径分隔符
String separator = File.pathSeparator;
System.out.println(separator);// 是一个分号,目录的分割(window中环境变量配置各个路径用分号分割,表示一个完整的路径结束) Linux中是冒号 :

//与系统有关的默认名称分隔符
separator = File.separator;
System.out.println(separator);// 向右 \ 目录名称分割 Linux /
}
}


###04File类构造方法_1
* A: File类构造方法_1
* a: File(String pathname)
* 通过将给定路径名字符串转换为一个File对象,之后可以使用File中的方法
* windows中的路径或文件名不区分大小写
* d: 案例代码
public class FileDemo1 {
public static void main(String[] args) {
function();
}
/*
* File(String pathname)
* 传递路径名: 可以写到文件夹,可以写到一个文件
* c:\abc c:\abc\Demo.java
* 将路径封装File类型对象
*/
public static void function(){
File file = new File(“d:\eclipse”);
System.out.println(file);
}
}

###05相对路径和绝对路径
* A: 相对路径和绝对路径
* a: 绝对路径
* 绝对路径是一个固定的路径,从盘符开始
* b: 相对路径
* 相对路径相对于某个位置,在eclipse下是指当前项目下
* c: 路径
绝对路径
在系统中具有唯一性
c:\windows\system32
相对路径
表示路径之间的关系
D:\develop\Java\jdk1.7.0_72\bin
D:\develop\Java\jre7
路径之间关系
Java 父目录是D:\develop
Java 子目录是:jdk1.7.0_72
父路径是 唯一性
子目录是可以多个


###06File类的构造方法_2
​ * A: File类的构造方法_2
​ * a:File(String parent, String child)
​ * 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 对象

* b: File(File parent, String child)

* c: 案例代码
public class FileDemo1 {
public static void main(String[] args) {
function_2();
}
/*
* File(File parent,String child)
* 传递路径,传递File类型父路径,字符串子路径
* 好处: 父路径是File类型,父路径可以直接调用File类方法
*/
public static void function_2(){
File parent = new File("d:");
File file = new File(parent,"eclipse");
System.out.println(file);
}

/*
* File(String parent,String child)
* 传递路径,传递字符串父路径,字符串子路径
* 好处: 单独操作父路径和子路径
*/
public static void function_1(){
File file = new File("d:","eclipse");
System.out.println(file);
}
}


###07File类创建文件功能
​ * A: File类创建文件功能
​ * a: public boolean createNewFile()
​ * 创建文件 如果存在这样的文件,就不创建了

* b: 案例代码
public class FileDemo2 {
public static void main(String[] args)throws IOException {
function();
}
/*
* File创建文件的功能
* boolean createNewFile()
* 创建的文件路径和文件名,在File构造方法中给出
* 文件已经存在了,不在创建
*/
public static void function()throws IOException{
File file = new File("c:\\a.txt");
boolean b = file.createNewFile();
System.out.println(b);
}
}


###08File类创建目录功能
​ * A: File类创建目录功能
​ * a: 创建目录
​ * public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了
​ * public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来
​ * b: 案例代码
​ public class FileDemo2 {
​ public static void main(String[] args)throws IOException {
​ function_1();
​ }
​ /*
​ * File创建文件夹功能
​ * boolean mkdirs() 创建多层文件夹
​ * 创建的路径也在File构造方法中给出
​ * 文件夹已经存在了,不在创建
​ */
​ public static void function_1(){
​ File file = new File(“c:\abc”);
​ boolean b = file.mkdirs();
​ System.out.println(b);
​ }
​ }

###09File类删除功能
* A: File类删除功能
* a: 删除功能
* public boolean delete():删除文件或者文件夹
* B: 案例代码
public class FileDemo2 {
public static void main(String[] args)throws IOException {
function_2();
}
/*
* File类的删除功能
* boolean delete()
* 删除的文件或者是文件夹,在File构造方法中给出
* 删除成功返回true,删除失败返回false
* 删除方法,不走回收站,直接从硬盘中删除
* 删除有风险,运行需谨慎
*/
public static void function_2(){
File file = new File(“c:\a.txt”);
boolean b = file.delete();
System.out.println(b);
}
}

###10File类获取功能
* A:File类获取功能
* a: 方法介绍
* String getName(): 返回路径中表示的文件或者文件夹名
* 获取路径中的最后部分的名字
* long length(): 返回路径中表示的文件的字节数
* String getAbsolutePath(): 获取绝对路径,返回String对象
* File getAbsoluteFile() : 获取绝对路径,返回File对象
* eclipse环境中,写一个相对路径,绝对位置工程根目录
* String getParent(): 获取父路径,返回String对象
* File getParentFile(): 获取父路径,返回File对象

* b: 案例代码

public class FileDemo3 {
public static void main(String[] args) {
function_3();
}
/*
* File类的获取功能
* String getParent() 返回String对象
* File getParentFile()返回File对象
* 获取父路径
*/
public static void function_3(){
File file = new File("d:\\eclipse\\eclipse.exe");
File parent = file.getParentFile();
System.out.println(parent);
}

/*
* File类获取功能
* String getAbsolutePath() 返回String对象
* File getAbsoluteFile() 返回File对象
* 获取绝对路径
* eclipse环境中,写的是一个相对路径,绝对位置工程根目录
*/
public static void function_2(){
File file = new File("src");
File absolute = file.getAbsoluteFile();
System.out.println(absolute);
}

/*
* File类获取功能
* long length()
* 返回路径中表示的文件的字节数
*/
public static void function_1(){
File file = new File("d:\\eclipse\\eclipse.exe");
long length = file.length();
System.out.println(length);
}

/*
* File类的获取功能
* String getName()
* 返回路径中表示的文件或者文件夹名
* 获取路径中的最后部分的名字
*/
public static void function(){
File file = new File("d:\\eclipse\\eclipse.exe");
String name = file.getName();
System.out.println(name);

/*String path = file.getPath();
System.out.println(path);*/
// System.out.println(file);
}
}


###11File类判断功能
​ * A: File类判断功能
​ * a: 方法介绍
​ * boolean exists(): 判断File构造方法中封装路径是否存在
​ * 存在返回true,不存在返回false
​ * boolean isDirectory(): 判断File构造方法中封装的路径是不是文件夹
​ * 如果是文件夹,返回true,不是文件返回false
​ * boolean isFile(): 判断File构造方法中封装的路径是不是文件
​ * 如果是文件,返回true,不是文件返回false

* b: 案例代码
public class FileDemo4 {
public static void main(String[] args) {
function_1();
}
/*
* File判断功能
* boolean isDirectory()
* 判断File构造方法中封装的路径是不是文件夹
* 如果是文件夹,返回true,不是文件返回false
*
* boolean isFile()
* 判断File构造方法中封装的路径是不是文件
*/
public static void function_1(){
File file = new File("d:\\eclipse\\eclipse.exe");
if(file.exists()){
boolean b = file.isDirectory();
System.out.println(b);
}
}

/*
* File判断功能
* boolean exists()
* 判断File构造方法中封装路径是否存在
* 存在返回true,不存在返回false
*/
public static void function(){
File file = new File("src");
boolean b = file.exists();
System.out.println(b);
}
}

###12File类list获取功能
* A: File类list获取功能
* a: 方法介绍
* String[] list():获取到File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)
* 返回只有名字
* File[] listFiles():获取到,File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)
* 返回的是目录或者文件的全路径
* static File[] listRoots(): 列出可用的文件系统根

* b: 案例代码
public class FileDemo {
public static void main(String[] args) {
function_2();
}
public static void function_2(){
//获取系统中的所有根目录
File[] fileArr = File.listRoots();
for(File f : fileArr){
System.out.println(f);
}
}

/*
* File类的获取功能
* File[] listFiles()
* 获取到,File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)
* 返回的是目录或者文件的全路径
*/
public static void function_1(){
File file = new File("d:\\eclipse");
File[] fileArr = file.listFiles();
for(File f : fileArr){
System.out.println(f);
}
}

/*
* File类的获取功能
* String[] list()
* 获取到,File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)
* 返回只有名字
*/
public static void function(){
File file = new File("c:");
String[] strArr = file.list();
System.out.println(strArr.length);
for(String str : strArr){
System.out.println(str);
}
}
}

###13文件过滤器
* A: 文件过滤器
* a: 作用
* 过滤一个目录下的指定扩展名的文件,或者包含某些关键字的文件夹

* b: 方法介绍
* public String[] list(FilenameFilter filter)
* public File[] listFiles(FileFilter filter)

* C: 案例代码
/*
* 自定义过滤器
* 实现FileFilter接口,重写抽象方法
*/
public class MyFilter implements FileFilter{
public boolean accept(File pathname) {
/*
* pathname 接受到的也是文件的全路径
* c:\\demo\\1.txt
* 对路径进行判断,如果是java文件,返回true,不是java文件,返回false
* 文件的后缀结尾是.java
*/
//String name = pathname.getName();
return pathname.getName().endsWith(".java");

}
}

/*
* File类的获取,文件获取过滤器
* 遍历目录的时候,可以根据需要,只获取满足条件的文件
* 遍历目录方法 listFiles()重载形式
* listFiles(FileFilter filter)接口类型
* 传递FileFilter接口的实现类
* 自定义FileFilter接口实现类,重写抽象方法,
* 接口实现类对象传递到遍历方法listFiles
*/
public class FileDemo1 {
public static void main(String[] args) {
File file = new File("c:\\demo");
File[] fileArr = file.listFiles(new MyFilter());
for(File f : fileArr){
System.out.println(f);
}
}
}

###14文件过滤器_原理分析
* A:文件过滤器_原理分析
* listFiles()遍历目录的同时,获取到了文件名全路径,调用过滤器的方法accept,将获取到的路径传递给accept方法的参数pathname
* accept方法接收了参数pathname,参数是listFiles传递来的
* 在accept方法中,进行判断,如果这个路径是Java文件,返回true,走着返回false
* 一旦方法返回了true
* listFiles将路径保存到File数组中

###15递归遍历全目录
* A: 递归遍历全目录
* a: 案例代码
/*
* 对一个目录的下的所有内容,进行完全的遍历
* 编程技巧,方法的递归调用,自己调用自己
/
public class FileDemo {
public static void main(String[] args) {
File dir = new File(“d:\eclipse”);
getAllDir(dir);
}
/

* 定义方法,实现目录的全遍历
*/
public static void getAllDir(File dir){
System.out.println(dir);
//调用方法listFiles()对目录,dir进行遍历
File[] fileArr = dir.listFiles();
for(File f : fileArr){
//判断变量f表示的路径是不是文件夹
if(f.isDirectory()){
//是一个目录,就要去遍历这个目录
//本方法,getAllDir,就是给个目录去遍历
//继续调用getAllDir,传递他目录
getAllDir(f);
}else{
System.out.println(f);
}
}
}
}


###16递归概念和注意事项
​ * A:递归概念和注意事项
​ * a: 递归概念
​ * 递归,指在当前方法内调用自己的这种现象
​ * 递归分为两种,直接递归和间接递归
​ * 直接递归称为方法自身调用自己。间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法
​ * b: 注意事项
​ * 递归一定要有出口, 必须可以让程序停下
​ * 递归次数不能过多
​ * 构造方法,禁止递归

###17递归求和计算
​ * A: 递归求和计算
​ * a: 题目分析
​ * 1+2+3+…+(n-1)+n:求1到n的和
​ * 总结规律:1到n的和等于1到(n-1)的和再加n
​ * getSum(n-1)+ n
​ * 递归出口:getSum(1) return 1;

* b: 案例代码 
/*
* 方法的递归调用
* 方法自己调用自己
* 适合于,方法中运算的主体不变,但是运行的时候,参与运行的方法参数会变化
* 注意:
* 递归一定要有出口, 必须可以让程序停下
* 递归次数不能过多
* 构造方法,禁止递归
*/
public class DiGuiDemo {
public static void main(String[] args) {
int sum = getSum(3);
System.out.println(sum);
}


/*
* 计算 1+2+3+100和 = 5050
* 计算规律:
* n+(n-1)+(n-2)
* 100+(100-1)+(99-1)+...1
*/
public static int getSum(int n){
if( n == 1)
return 1;
return n + getSum(n-1);
}

}

###18递归求阶乘
* A: 递归求和计算
* a: 题目分析
* 5!=54321
* =54!
* 4!=4
3!
* 3!=32!
* 2!=2
1!
* 1!=1
* n!=n*(n-1)!
* 递归出口:ngetJieCheng(n-1): getJieCheng(1) return 1;
* b: 案例代码
/

* 方法的递归调用
* 方法自己调用自己
* 适合于,方法中运算的主体不变,但是运行的时候,参与运行的方法参数会变化
* 注意:
* 递归一定要有出口, 必须可以让程序停下
* 递归次数不能过多
* 构造方法,禁止递归
*/
public class DiGuiDemo {
public static void main(String[] args) {
System.out.println(getJieCheng(5));

}

/*
* 计算阶乘 5!
* 5*4*3*2*1
*/
public static int getJieCheng(int n){
if ( n == 1)
return 1;
return n * getJieCheng(n-1);
}
}

###19递归计算斐波那契数列
* A: 递归计算斐波那契数列
* a:题目分析
* 1 1 2 3 5 8 13 21
* 从第三项开始,后面的每一项都等于前面两项的和,第一项和第二项的值为1,作为程序的出口
* b: 案例代码
/*
* 方法的递归调用
* 方法自己调用自己
* 适合于,方法中运算的主体不变,但是运行的时候,参与运行的方法参数会变化
* 注意:
* 递归一定要有出口, 必须可以让程序停下
* 递归次数不能过多
* 构造方法,禁止递归
/
public class DiGuiDemo {
public static void main(String[] args) {
System.out.println(getFBNQ(12));
}
/

* 方法递归,计算斐波那契数列
*
*/
public static int getFBNQ(int month){
if( month == 1)
return 1;
if( month == 2)
return 1;
return getFBNQ(month-1)+getFBNQ(month-2);
}
}
###20遍历目录下的所有java文件
* A: 遍历目录下的所有java文件
* a: 案例代码
public class MyJavaFilter implements FileFilter {
public boolean accept(File pathname) {
//判断获取的是目录,直接返回true
if(pathname.isDirectory())
return true;
return pathname.getName().toLowerCase().endsWith(“.java”);
}

}
/*
* 遍历目录,获取目录下的所有.java文件
* 遍历多级目录,方法递归实现
* 遍历的过程中,使用过滤器
*/
public class FileDemo1 {
public static void main(String[] args) {
getAllJava(new File("c:\\demo"));
// new File("c:\\demo").delete();
}
/*
* 定义方法,实现遍历指定目录
* 获取目录中所有的.java文件
*/
public static void getAllJava(File dir){
//调用File对象方法listFiles()获取,加入过滤器
File[] fileArr = dir.listFiles(new MyJavaFilter());
for(File f : fileArr){
//对f路径,判断是不是文件夹
if(f.isDirectory()){
//递归进入文件夹遍历
getAllJava(f);
}else{
System.out.println(f);
}
}
}
}

###21总结
* 把今天的知识点总结一遍。


标签:字符,file,String,路径,static,File,public,字节
From: https://blog.51cto.com/u_15007329/5938349

相关文章

  • Python笔记--字符串
    字符串的三种定义单引号定义法:双引号定义法:三引号定义法:结果:其中,三引号定义的话,不用变量接收的话,就相当于多行注释;用变量接收的话,就是对于字符串的定义了。字符串......
  • PWN ORW 最短的shellcode(33字节!)
    前言:下面的rdx就是read(1,buf,n)中的n,这个值太大或者太小都没办法正常读。所以分两种大情况:orw:(64bit,34字节,针对需要调整rdx的情况:)shellcode=asm('''movedx,0x6761......
  • 把字符串数组"[0.1,0.2]"转换array<double>,把字符串数组“['2021-01-01','2021-01-02&
    importorg.apache.spark.sql.functions.{col,regexp_replace,to_date,udf}----把字符串数组"[0.1,0.2]"转换array<double>:frame=frame.withColumn("ArrayDoubleValu......
  • 表示数值的字符串
    请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。但是"12e","1a3.14","1.2.3","+-5"和"12e+4.......
  • c++字符串和字符数组互相转
    voidmain(){//字符串转字符数组stringname="ddddd";charbuf[]={0};strcpy(buf,name.c_str());//字符串转字符数组,使用strcpycout<<n......
  • notepad正则匹配批量替换字符
    目录参考链接例子参考链接正则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽......
  • 微信小程序 ArrayBuffer转16进制,16进制转字符串(解决中文乱码)
    场景应用微信小程序使用TCP通讯,接收数据的类型为ArrayBuffer,转字符串后中文乱码。(uniapp开发)//原本使用方法//拿到TCP通讯的ArrayBuffer数据letunit8Arr=new......
  • sql中对报错信息字符串的截取
     一般完整的sql报错信息是:SQLERRM||dbms_utility.format_error_backtrace()eg:ORA-00001:uniqueconstraint(XXXXXXX)violatedORA-06512:at"XXXXXXXX",lin......
  • HTML URL 字符编码
    URL编码会将字符转换为可通过因特网传输的格式。 URL-统一资源定位器Web浏览器通过URL从web服务器请求页面。URL是网页的地址,比如 http://www.w3school.co......
  • HTML字符实体
    HTML中的预留字符必须被替换为字符实体。HTML实体在HTML中,某些字符是预留的。在HTML中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签。如果希望正......