黑马程序员_<<File>>

本文详细介绍了使用ASP.Net、Android、IOS进行开发的基本方法,包括文件操作、目录创建与删除、判断文件属性等核心内容。同时分享了.NET培训的相关经验与技巧,期待与开发者交流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------


1. File

File类是把文件和文件夹封装成了对象,方便操作文件或者是文件夹的属性,在创建的时候有通过构造方法来指定,有三种格式:

new File(“C:\\java\\a.txt”);

new File(“C:\\java”,“a.txt”);//这一种方法比第一种方法的优点是:把路径分开了,可以方便指定同一个文件夹下的文件

new File(“C:”+ File.separator +” java”+”a.txt”);//这一个方法可跨平台的使用,分隔符是跨平台的File.separator。

2. 基本方法

1.创建

创建分为创建文件和创建文件夹(目录)


import java.io.File;
import java.io.IOException;
 
public class FileDemo {
   public static void main(String[] args) throws IOException {
     /* 指定文件对象 */
     File f = new File("F:" + File.separator + "java");
     File file = new File("F:\\java\\a.txt");
 
     /*
      * boolean mkdir()创建单级目录,当存在此目录,创建失败(false),否则创建成功(true) 例如:F:\\java
      * F盘必须存在 F:\\java\123 F:\\java必须存在 boolean
      * mkdirs()可以创建多级目录,即使前面的目录不存在,那么也会创建,存在此创建失败,不存在创建成功
      * 例如:F:\\java\day01\\hello 即使F盘中不存在java\\day01 那么使用此方法,也会创建前面不存在的目录
      * createNewFile()
      * 创建文件,指定的目录必须存在(F:\\java),如果此目录中存在此文件,此创建失败(false),不存在,则创建成功(true)
      */
 
     System.out.println(f.mkdir());// 创建单级目录
     System.out.println(file.createNewFile());// 创建文件
     System.out.println(new File("F:\\java\\123\\456").mkdirs());// 创建多级目录
   }
 
}


2. 删除


public class FileDemo {
   public static void main(String[] args) throws IOException {
     /* 指定文件对象 */
     File f = new File("F:" + File.separator + "java");
     File file = new File("F:\\java\\a.txt");
 
     /*
      *  boolean delete()删除文件或者是目录(空的),如果不存在,则是false,存在则删除
      *  void deleteOnExit()程序退出时删除,即使前面出现了异常,那么在程序结束的时候也会执行此语句,删除此文件
      */
 
     System.out.println(f.delete());// 删除目录
     System.out.println(file.delete());// 删除文件
    
   }
 
}

3. 判断

import java.io.File;
import java.io.IOException;
 
public class FileDemo {
   public static void main(String[] args) throws IOException {
     /* 指定文件对象 */
     File f = new File("F:" + File.separator + "java");
     File file = new File("F:\\java\\a.txt");
 
     /*
      * boolean exists()判断文件或者目录是否存在 boolean isFile()判断是否是文件 boolean
      * isDirectory()判断是否是目录 boolean isHidden()判断是否是隐藏文件 boolean
      * isAbsolute()判断是否是绝对路径
      */
 
     System.out.println(f.exists());// 是否存在
     System.out.println(file.isFile());// 是否是文件,若存在,切是文件,那么就是true,否则是false
     System.out.println(file.isDirectory());// 判断是否是目录,存在且是文件,那么就是true,否则是false
     System.out.println(file.isAbsolute());// 判断是否是绝对路径
   }
 
}


4. 获取

boolean renameTo(Filedest)重命名,也可以模拟移动哦,重命名到其他文件夹中,那就是移动了


import java.io.File;
import java.io.IOException;
 
public class FileDemo {
   public static void main(String[] args) throws IOException {
     /* 指定文件对象 */
     File f = new File("F:" + File.separator + "java");
     File file = new File("F:\\java\\a.txt");
 
     /*
      * String getName()获得文件名称
      * String getParent()获得上一目录 String
      * getAbsolutePath()获得绝对路径
      * long length()获得文件大小 long
      * lastModified()获得最后一次修改的时间
      */
 
     System.out.println(f.getName());// 获得名称
     System.out.println(file.getName());// 获得名称
     System.out.println(f.getParent());// 获得上一目录
     System.out.println(file.getParent());// 获得上一目录
     System.out.println(f.getAbsolutePath());// 获得绝对路径
     System.out.println(file.getAbsolutePath());// 获得绝对路径
   }
 
}
结果:
java
a.txt
F:\
F:\java
F:\java
F:\java\a.txt


3.常用方法

public class FileDemo {
 
   public static void main(String[] args) throws IOException {
     /*
      * String[] list()获得指定文件下的所有文件或者目录的名称(包含隐藏文件活目录)
           String[] list(FilenameFilter filter)获得名称的时候加入了过滤器(包含隐藏文件活目录)
      * File[] listFiles()获得的是指定文件下的所有File对象(包含隐藏文件活目录)
      *  File[] listFiles(FilenameFilter filter)加入了过滤器(包含隐藏文件活目录)
      *  static File[]listRoots()列出了可用目录的根
      */
     /* 获得所有的根目录,并打印出 */
     File[] rootFiles = File.listRoots();
     for (File f : rootFiles)
        System.out.println(f);
     /* 获得F盘下的所有文件或者目录的名称,并打印出 */
     String[] fileNames = new File("F:\\").list();
     System.out.println("-----------------\n所有名称");
     for (String name : fileNames)
        System.out.println(name);
     /* 获得F盘下的所有.txt文件安的名称,并打印出,使用的是过滤器,使用匿名内部类,复写accept方法 */
     String[] fileTxtNames = new File("F:\\").list(new FilenameFilter() {
        public boolean accept(File dir, String name) {// 此方法决定是否把其名字过滤
          return name.endsWith(".txt");
        }
     });
     System.out.println("-----------------\n.txt文件");
     for (String n : fileTxtNames)
        System.out.println(n);
     /*File[] listFiles()用法和list()用法一样,只是返回的是File对象数组*/
     File [] Files=new File("F:\\").listFiles();
     System.out.println("-----------------");
     for(File f:Files)
        System.out.println(f.getName()+":"+f.length());
   }
 
}
结果:
C:\
D:\
E:\
F:\
G:\
-----------------
所有名称
$RECYCLE.BIN
A
B
ClassDemo.java
Config.Msi
demo.txt
demo1.txt
exception.log
IP地址.doc
itat
java培训视频
jsp
music
System Volume Information
SystemInfo.txt
voa
yy
录音
新建文本文档.txt
照片
电子书
随笔知识点
黑马
黑马笔记
-----------------
.txt文件
demo.txt
demo1.txt
SystemInfo.txt
新建文本文档.txt
-----------------
$RECYCLE.BIN:4096
A:0
B:0
ClassDemo.java:682
Config.Msi:0
demo.txt:6
demo1.txt:8
exception.log:123
IP地址.doc:58368
itat:4096
java培训视频:4096
jsp:4096
music:28672
SystemVolume Information:0
SystemInfo.txt:1904
voa:0
yy:0
录音:4096
新建文本文档.txt:29
照片:4096
电子书:4096
随笔知识点:4096
黑马:4096
黑马笔记:16384


4. 输出目录下的所有内容

利用的是递归算法

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
 
public class FileDemo {
 
   public static void main(String[] args) throws IOException {
     File file = new File("F:\\黑马");
     showDir(file, 0);
   }
 
   /* 格式方式 */
   public static String show(int level) {
     StringBuilder sb = new StringBuilder();
     sb.append("|-");
     for (int i = 0; i < level; i++) {
        sb.insert(0, "  ");
     }
     return sb.toString();
   }
 
   /* 利用递归显示 */
   public static void showDir(File dir, int level) {
     System.out.println(show(level) + dir.getName());
     level++;
     File[] Files= dir.listFiles();
     for (int x = 0; x < Files.length; x++) {
        if (Files[x].isDirectory()){// 若是目录,继续递归
           showDir(Files[x], level);
        } else {
          System.out.println(show(level) + Files[x].getName());
        }
     }
   }
}
结果:
|-heima
  |-Game.rar
  |-Java常用英语汇总.doc
  |-java特性.jpg
  |-思维导图
    |-01-Java 概述.png
    |-02-Java基础语法.png
    |-03-面向对象.png
  |-面试测试题
    |-aa.java
    |-exam.zip
  |-黑马活动
    |-DVD管理系统----附带代码
      |-DVD管理系统简介.doc
    |-公约数和公倍数---附带代码
      |-gysAndgbs.java
      |-Person.java
      |-sushu.java
      |-公约数,公倍数和素数.doc
    |-员工打卡系统----附带代码
      |-员工打卡系统.doc
    |-打印系统----附带代码
      |-打印系统.doc
    |-提交作业验证系统---附带代码
      |-作业提交验证.doc
    |-算法--迭代和递归---附带代码
      |-方程的解-迭代,递归.doc
      |-方程解---代码.doc
      |-方程解---迭代图.png
      |-阶乘--递归---代码.doc
      |-阶乘运行结果案例.png


5. 删除文件夹

思路:

从里向外删除,先删除文加夹中的文件。当文件没了,然后在删除此空文件夹,因为文件夹中有文件的话,删除不了。所以先清除里面的文件。使用的也是递归。

import java.io.File;
 
public class DeleteFileDemo {
   public static void main(String[] args) {
     File file = new File("F:\\heima");
     deleteDir(file);
 
   }
 
   public static void deleteDir(File dir) {
     File[] files = dir.listFiles();
     for (int i = 0; i < files.length; i++) {
        if (files[i].isDirectory())
          deleteDir(files[i]);
        else
          System.out.println(files[i].delete());
     }
     System.out.println(dir.delete());
   }
 
}


6. 练习

一个文件夹中的文件路径存到一个文件中,这样可以方便我们查找。

思路:

1. 遍历文件夹中的所有文件,找到我们符合条件的文件,然后存到一个集合中。

2. 遍历此集合,然后存到一个文件中。


import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
 
public class Demo {
 
  public static void main(String[] args) throws IOException {
    File file= new File("F:\\黑马笔记");
    File filepath = new File("F:\\doc.txt");
    List<File> list = new ArrayList<File>();
    getFile(file,list);
    writerToFile(list, filepath);
    System.out.println("OVER");
  }
 
  /* 遍历列表,将其存到集合中 */
  public static void getFile(File dir, List<File> listFiles) {
    File[] files = dir.listFiles();
    /* 遍历列表,存到集合中 */
    for (File f : files) {
      if (f.isDirectory()) {
         getFile(f, listFiles);
      } else {
         if (f.getName().endsWith(".doc"))// 判断是否是doc文件
           listFiles.add(f);
      }
    }
 
  }
 
  /* 遍历集合,写到文件中 */
  public static void writerToFile(List<File> listFiles, File FilePaths)
      throws IOException {
    BufferedWriter bw = new BufferedWriter(new FileWriter(FilePaths));// 定义的写入流
    /* 遍历集合,把其写到文件中 */
    for (File f : listFiles) {
      bw.write(f.getAbsolutePath());// 将绝对路径写到文件中
      bw.newLine();
      bw.flush();
    }
    bw.close();
  }
}
结果:




--------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------


一、实验步骤 1、创建maven web项目或者模块,导入相关软件的依赖包。 2、进行tomcat的相关配置。 3、在数据库mybatis中创建book表,并插入一条数据,sql语句如下: USE mybatis; CREATE TABLE `tb_book` ( `id` int(11) , `name` varchar(32) , `press` varchar(32) , `author` varchar(32) ); INSERT INTO `tb_book` VALUES (1, 'Java EE企业级应用开发教程', '人民邮电出版社', '黑马程序员'); 4、在src/main/java里创建com包,在里面创建itheima子包,在itheima包中分别创建controller,service,dao和domain包。 5、在domain包下创建名称为Book的实体类。代码如下: public class Book { private Integer id; //图书id private String name; //图书名称 private String press; //出版社 private String author; //作者 //getter和setter方法自行补充 @Override public String toString() { return super.toString(); } } 6、在dao包下创建接口BookMapper,里面创建一个根据id查询图书信息的方法,代码如下: public interface BookMapper { public Book findBookById(Integer id); } 7、在src/main/resources文件夹中,创建多级文件夹com/itheima/dao,在dao文件夹下,创建映射文件BookMapper.xml,记录与findBookById对应的sql语句。 <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.itheima.dao.BookMapper"> <!--根据id查询图书信息 --> <select id="findBookById" parameterType="int" resultType="com.itheima.domain.Book"> select * from tb_book where id = #{id} </select> </mapper> 8、在service包里创建BookService接口,在BookService接口中定义findBookById()方法,通过id获取对应的Book信息。代码如下: public interface BookService { public Book findBookById(Integer id); } 9、在service包中创建子包impl,在ipml包中创建BookServiceImpl类,BookServiceImpl类实现BookService接口的findBookById()方法,并在类中注入一个BookMapper对象。findBookById()方法通过注入的BookMapper对象调用findBookById()方法,根据id查询对应的图书信息。代码如下: public class BookServiceImpl implements BookService { @Autowired private BookMapper bookMapper; public Book findBookById(Integer id) { return bookMapper.findBookById(id); } } 10、在controller包中创建BookController类,在BookController类中注入一个BookService对象,并且定义一个名称为findBookById()的方法。findBookById()方法获取传递过来的图书id,并将图书id作为参数传递给BookService对象调用的findBookById()方法。代码如下: @Controller public class BookController { @Autowired private BookService bookService; @RequestMapping("/book") public ModelAndView findBookById(Integer id) { Book book = bookService.findBookById(id); ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("book"); modelAndView.addObject("book", book); return modelAndView; } } 11、在resources文件夹中创建jdbc.properties,作为数据库连接配置文件,代码如下: jdbc.driverClassName=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true\ &characterEncoding=utf-8&serverTimezone=Asia/Shanghai jdbc.username=root jdbc.password=root 12、在resources文件夹中创建Spring的配置文件application-dao.xml文件,用于扫描包,引入数据库连接配置文件,配置Spring和MyBatis的整合信息(包括SqlSessionFactoryBean类和MapperScannerConfigurer的配置)。代码如下: <!--开启注解扫描, 扫描包--> <context:component-scan base-package="com.itheima.service"/> <!--引入属性文件--> <context:property-placeholder location="classpath:jdbc.properties"/> <!--数据源--> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <!--创建SqlSessionFactory对象--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!--数据源--> <property name="dataSource" ref="dataSource"/> </bean> <!--扫描Dao包,创建动态代理对象,会自动存储到spring IOC容器中--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!--指定要扫描的dao的包--> <property name="basePackage" value="com.itheima.dao"/> </bean> 13、在src/test/java目录下,创建名称为BookTest的测试类,用于对Spring和MyBatis的整合进行测试。用上@RunWith和@ContextConfiguration注解,代码如下,对此方法进行测试,成功打印出书籍信息即可证明Spring和MyBatis整合成功。 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations ="classpath:application-dao.xml") public class BookTest { @Autowired private BookService bookService; @Test public void findBookById() { Book book = bookService.findBookById(1); System.out.println("图书id:" + book.getId()); System.out.println("图书名称:" + book.getName()); System.out.println("作者:" + book.getAuthor()); System.out.println("出版社:" + book.getPress()); } } 14、下面对Spring和SpringMVC进行整合。在resources目录下创建Spring MVC的配置文件spring-mvc.xml,负责扫描controller层以及配置视图解析器。代码如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 配置要扫描的包 --> <context:component-scan base-package="com.itheima.controller"/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="suffix" value=".jsp"/> </bean> <!-- 配置默认Servlet,处理静态资源 --> <mvc:default-servlet-handler/> <!-- 配置注解驱动 --> <mvc:annotation-driven/> </beans> 15、在项目的web.xml中配置Spring的监听器ContextLoaderListener来加载Spring容器及Spring的配置文件,具体配置如下所示: <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:application-*.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener</listener-class> </listener> 16、接着在web.xml中配置SpringMVC的前端控制器,并在初始化前端控制器时加载Spring MVC的的配置文件spring-mvc.xml。代码如下: <!--Spring MVC 前端控制器--> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <!--初始化参数--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <!--项目启动时候,初始化前端控制器--> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> 17、在webapp目录下创建book.jsp,代码如下: <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <html> <head><title>图书信息查询</title></head> <body> <table border="1"> <tr> <th>图书id</th> <th>图书名称</th> <th>出版社</th> <th>作者</th> </tr> <tr> <td>${book.id}</td> <td>${book.name}</td> <td>${book.press}</td> <td>${book.author}</td> </tr> </table> </body> </html> 18、运行项目,在浏览器地址栏中输入http://localhost/book?id=1来进行图书查询。如果能顺利访问,表示SSM整合成功(如果你端口不是80的话,访问url得加上端口)。 用idea按照以上流程,详细的列出每一步的步骤,教会小白。
最新发布
06-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值