当前位置: 首页 > news >正文

湖北做网站系统哪家好怎样搭建免费网站

湖北做网站系统哪家好,怎样搭建免费网站,科技布是什么面料,电子商务网站系统规划我们先来认识狭义上的⽂件(file)。针对硬盘这种持久化存储的I/O设备#xff0c;当我们想要进⾏数据保存时#xff0c;往往不是保存成⼀个整体#xff0c;⽽是独⽴成⼀个个的单位进⾏保存#xff0c;这个独⽴的单位就被抽象成⽂件的概念#xff0c;就类似办公桌上的⼀份份真…我们先来认识狭义上的⽂件(file)。针对硬盘这种持久化存储的I/O设备当我们想要进⾏数据保存时往往不是保存成⼀个整体⽽是独⽴成⼀个个的单位进⾏保存这个独⽴的单位就被抽象成⽂件的概念就类似办公桌上的⼀份份真实的⽂件⼀般. ⽂件除了有数据内容之外还有⼀部分信息例如⽂件名、⽂件类型、⽂件⼤⼩等并不作为⽂件的数据⽽存在我们把这部分信息可以视为⽂件的元信息. 树型结构组织 和 ⽬录 同时随着⽂件越来越多对⽂件的系统管理也被提上了⽇程如何进⾏⽂件的组织呢⼀种合乎⾃然的想法出现了就是按照层级结构进⾏组织⸺也就是我们数据结构中学习过的树形结构。这样⼀种专⻔⽤来存放管理信息的特殊⽂件诞⽣了也就是我们平时所谓⽂件夹(folder)或者⽬录(directory)的概念。 例如:我们点开一个文件,里面又有很多个文件,就和树的子类一样 文件路径(Path) 如何在⽂件系统中如何定位我们的⼀个唯⼀的⽂件就成为当前要解决的问题但这难不倒计算机科学家因为从树型结构的⻆度来看树中的每个结点都可以被⼀条从根开始⼀直到达的结点的路径所描述⽽这种描述⽅式就被称为⽂件的绝对路径absolute path。 除了可以从根开始进⾏路径的描述我们可以从任意结点出发进⾏路径的描述⽽这种描述⽅式就被称为相对路径relative path相对于当前所在结点的⼀条路径。 其他知识 即使是普通⽂件根据其保存数据的不同也经常被分为不同的类型我们⼀般简单的划分为⽂本⽂件和⼆进制⽂件分别指代保存被字符集编码的⽂本和按照标准格式保存的⾮被字符集编码过的⽂件。 Windows操作系统上会按照⽂件名中的后缀来确定⽂件类型以及该类型⽂件的默认打开程序。但这个习俗并不是通⽤的在OSX、Unix、Linux等操作系统上就没有这样的习惯⼀般不对⽂件类型做如此精确地分类。 ⽂件由于被操作系统进⾏了管理所以根据不同的⽤⼾会赋予⽤⼾不同的对待该⽂件的权限⼀般地可以认为有可读、可写、可执⾏权限。 Windows操作系统上还有⼀类⽂件⽐较特殊就是平时我们看到的快捷⽅式shortcut这种⽂件只是对真实⽂件的⼀种引⽤⽽已。其他操作系统上也有类似的概念例如软链接soft link等。 最后很多操作系统为了实现接⼝的统⼀性将所有的I/O设备都抽象成了⽂件的概念使⽤这⼀理念最为知名的就是Unix、Linux\操作系统⸺万物皆⽂件。 Java操作文件(正文) Java中通过 java.io.File 类来对⼀个⽂件包括⽬录进⾏抽象的描述。注意有File?对象 并不代表真实存在该⽂件。 File 概述 我们先来看看 File 类中的常⻅属性、构造⽅法和⽅法 属性 修饰符及类型              属性                    说明 static String           pathSeparator          依赖于系统的路径分隔符String类型的表⽰ static char              pathSeparator           依赖于系统的路径分隔符char类型的表⽰ 构造方法 签名                                                说明 File(File parent,String child)          根据⽗⽬录孩⼦⽂件路径创建⼀个新的File实例 File(String pathname)                    根据⽂件路径创建⼀个新的File实例路径可以是绝对路径或者相对路径 File(String parent,String child)       根据⽗⽬录孩⼦⽂件路径创建⼀个新的File实 例⽗⽬录⽤路径表⽰ 方法 修饰符及返回值类型                       ⽅法签名                            说明 String                                   getParent()                    返回File对象的⽗⽬录⽂件路径 String                                   getName()                     返回FIle对象的纯⽂件名称 String                                   getPath()                       返回File对象的⽂件路径 String                                   getAbsolutePath()         返回File对象的绝对路径 String                                   getCanonicalPath()       返回File对象的修饰过的绝对路径 boolean                                exists()                          判断File对象描述的⽂件是否真实存在  boolean                                isDirectory()                  判断File对象代表的⽂件是否是⼀个⽬录 boolean                                isFile()                           判断File对象代表的⽂件是否是⼀个普通⽂件 boolean                                createNewFile()             根据File对象⾃动创建⼀个空⽂件。成功创建后返回true boolean                                delete()                          根据File对象删除该⽂件。成功删除后返回true void                                      deleteOnExit()                根据File对象标注⽂件将被删   除删除动作会到JVM运⾏结束时才会进⾏ String[]                                  list()                                返回File对象代表的⽬录下的所有⽂件名 File[]                                     listFiles()                         返回File对象代表的⽬录下的所有⽂件以File对象表⽰ boolean                                mkdir()                            创建File对象代表的⽬录 boolean                                mkdirs()                          创建File对象代表的⽬录如果必要会创建中间⽬录 boolean                                renameTo(File dest)        进⾏⽂件改名也可以视为我们平时的剪切、粘贴操作 boolean                                canRead()                       判断⽤⼾是否对⽂件有可读权限 boolean                                canWrite()                        判断⽤⼾是否对⽂件有可写权限 File的方法代码示例: 1.(示例)观察get系列的特点和差异 import java.io.File; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { File file new File(..\\hello-world.txt); // 并不要求该⽂件真实存 System.out.println(file.getParent());System.out.println(file.getName()); System.out.println(file.getPath()); System.out.println(file.getAbsolutePath()); System.out.println(file.getCanonicalPath()); } } 运行结果: .. hello-world.txt ..\hello-world.txt D:\代码练习\⽂件⽰例1\..\hello-world.txt D:\代码练习\hello-world.txt 2.(示例)普通文件的创建和删除 import java.io.File; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { File file new File(hello-world.txt); // 要求该⽂件不存在才能看 System.out.println(file.exists()); System.out.println(file.isDirectory()); System.out.println(file.isFile()); System.out.println(file.createNewFile()); System.out.println(file.exists()); System.out.println(file.isDirectory()); System.out.println(file.isFile()); System.out.println(file.createNewFile()); } } 运行结果: false false false true true false true false 3.(示例)普通文件的删除 import java.io.File; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { File file new File(some-file.txt); // 要求该⽂件不存在才能看到相 System.out.println(file.exists()); System.out.println(file.createNewFile()); System.out.println(file.exists()); System.out.println(file.delete()); System.out.println(file.exists()); } } 运行结果: false true true true false 4.(示例)观察deleteOnExit的现象 import java.io.File; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { File file new File(some-file.txt); // 要求该⽂件不存在才能看到相 System.out.println(file.exists());System.out.println(file.createNewFile()); System.out.println(file.exists()); file.deleteOnExit(); System.out.println(file.exists()); } } 运行结果: false true true true 程序运⾏结束后⽂件还是被删除了 5.(示例)观察目录的创建 import java.io.File; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { File dir new File(some-dir); // 要求该⽬录不存在才能看到相同的现 System.out.println(dir.isDirectory()); System.out.println(dir.isFile()); System.out.println(dir.mkdir()); System.out.println(dir.isDirectory()); System.out.println(dir.isFile()); } } 运行结果: false false true true false 6.(示例)观察目录创建2 import java.io.File; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { File dir new File(some-parent\\some-dir); // some-parent 和 so System.out.println(dir.isDirectory()); System.out.println(dir.isFile()); System.out.println(dir.mkdir()); System.out.println(dir.isDirectory()); System.out.println(dir.isFile()); } } 运行结果: false false false false false mkdir()的时候如果中间⽬录不存在则⽆法创建成功;mkdirs()可以解决这个问题。 import java.io.File; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { File dir new File(some-parent\\some-dir); // some-parent 和 so System.out.println(dir.isDirectory()); System.out.println(dir.isFile()); System.out.println(dir.mkdirs()); System.out.println(dir.isDirectory()); System.out.println(dir.isFile()); } } 运行结果: false false true true false 7.(示例)观察文件重命名 import java.io.File; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { File file new File(some-file.txt); // 要求 some-file.txt 得存在 File dest new File(dest.txt); // 要求 dest.txt 不存在 System.out.println(file.exists()); System.out.println(dest.exists()); System.out.println(file.renameTo(dest)); System.out.println(file.exists()); System.out.println(dest.exists()); } } 运行结果: true false true false true 文件内容的读写--数据流 InputStream概述 方法: 说明 InputStream只是⼀个抽象类要使⽤还需要具体的实现类。关于InputStream的实现类有很多基本可以认为不同的输⼊设备都可以对应⼀个InputStream类我们现在只关⼼从⽂件中读取所以使⽤FileInputStream FileInputStream概述 代码示例: (1) 将⽂件完全读完的两种⽅式。相⽐较⽽⾔后⼀种的IO次数更少性能更好。 import java.io.*; // 需要先在项⽬⽬录下准备好⼀个 hello.txt 的⽂件⾥⾯填充 Hello 的内容 public class Main { public static void main(String[] args) throws IOException { try (InputStream is new FileInputStream(hello.txt)) { while (true) { int b is.read(); if (b -1) { // 代表⽂件已经全部读完 break; } System.out.printf(%c, b); } } } } import java.io.*; // 需要先在项⽬⽬录下准备好⼀个 hello.txt 的⽂件⾥⾯填充 Hello 的内容 public class Main { public static void main(String[] args) throws IOException { try (InputStream is new FileInputStream(hello.txt)) { byte[] buf new byte[1024]; int len; while (true) {len is.read(buf); if (len -1) { // 代表⽂件已经全部读完 break; } for (int i 0; i len; i) { System.out.printf(%c, buf[i]); } } } } } (2) 这⾥我们把⽂件内容中填充中⽂看看注意写中⽂的时候使⽤UTF-8编码。text.txt中填写你好 中国 注意这⾥我利⽤了这⼏个中⽂的UTF-8编码后⻓度刚好是3个字节和⻓度不超过1024字节的现状但这种⽅式并不是通⽤的 import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Arrays;public class Demo94 {public static void main(String[] args) throws IOException {try(InputStream inputStream new FileInputStream(./text.txt)){byte[] buffer new byte[1024];int len 0;while(true ){len inputStream.read(buffer);if(len-1){break;}for (int i 0; i len ; i3) {String s new String(buffer,i,3);System.out.println(s );}}}} }利⽤Scanner进⾏字符读取 上述例⼦中我们看到了对字符类型直接使⽤InputStream进⾏读取是⾮常⿇烦且困难的所以我们使⽤⼀种我们之前⽐较熟悉的类来完成该⼯作就是Scanner类 构造⽅法                                                              说明 Scanner(InputStream is,String charset)  使⽤charset字符集进⾏is的扫描读取 示例: import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Scanner;public class Demo83 {public static void main(String[] args) throws FileNotFoundException {try(InputStream inputStream new FileInputStream(./text.txt)){Scanner scanner new Scanner(inputStream);while(scanner.hasNext()){String s scanner.next();System.out.print(s);}} catch (IOException e) {throw new RuntimeException(e);}} }OutputStream概述 方法 说明: OutputStream同样只是⼀个抽象类要使⽤还需要具体的实现类。我们现在还是只关⼼写⼊⽂件 中所以使⽤FileOutputStream ⽤OutputStreamWriter进⾏字符写⼊ 示例: (1) import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream;public class Demo76 {public static void main(String[] args) throws FileNotFoundException {try (OutputStream outputStream new FileOutputStream(./text.txt)){outputStream.write(1);outputStream.write(s);outputStream.flush();} catch (IOException e) {throw new RuntimeException(e);}} }(2) import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream;public class Demo86 {public static void main(String[] args) {try(OutputStream outputStream new FileOutputStream(./text.txt,true)){byte[] buffer new byte[]{a,v,s,y};outputStream.write(buffer);outputStream.flush();} catch (FileNotFoundException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);}} }(3) import java.io.*; public class Main { public static void main(String[] args) throws IOException { try (OutputStream os new FileOutputStream(output.txt)) { byte[] b new byte[] { (byte)G, (byte)o, (byte)o, (byte)d, (byte)B, (byte)a }; os.write(b, 0, 4); // 不要忘记 flush os.flush(); } } } (4) import java.io.*; public class Main { public static void main(String[] args) throws IOException { try (OutputStream os new FileOutputStream(output.txt)) { String s 你好中国; byte[] b s.getBytes(utf-8); os.write(b); // 不要忘记 flush os.flush(); } 利⽤PrintWriter找到我们熟悉的⽅法 上述我们其实已经完成输出⼯作但总是有所不⽅便我们接来下将OutputStream处理下使⽤PrintWriter类来完成输出因为PrintWriter类中提供了我们熟悉的print/println/printf⽅法 import java.io.*;public class Demo856 {public static void main(String[] args) throws FileNotFoundException {try(OutputStream outputStream new FileOutputStream(./text.txt)){PrintStream printStream new PrintStream(outputStream);printStream.printf(我是第一行);printStream.println(我是第二行);printStream.println(我是第三行);outputStream.flush();} catch (IOException e) {throw new RuntimeException(e);}} }小程序练习 ⽰例1 扫描指定⽬录并找到名称中包含指定字符的所有普通⽂件不包含⽬录并且后续询问⽤⼾是否要删除该⽂件 import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Scanner;public class Demo867 {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.println(请输入要搜索的目录根节点);String rootDirPath scanner.next();File rootDir new File(rootDirPath);if(rootDir.isDirectory()){System.out.println(不是目录,退出);return;}System.out.println(请输入要搜索文件包含的名字);String token scanner.next();ListFile result new ArrayList();scanDir(rootDir,token,result);System.out.println(共找到了-);for (File file:result) {System.out.println(请问您是否需要删除该文件);String str scanner.next();if(str.toLowerCase().equals(yes)){file.delete();}}}private static void scanDir(File rootDir, String token, ListFile result) {File[] files rootDir.listFiles();if(filesnull || files.length0){return;}for (int i 0; i files.length; i) {if(files[i].isDirectory()){scanDir(files[i],token,result);}else if(files[i].getName().contains(token)){result.add(files[i]);}}} }⽰例2 进⾏普通⽂件的复制 import java.io.*; import java.util.Scanner;public class Demo462 {public static void main(String[] args) throws FileNotFoundException {Scanner scanner new Scanner(System.in);System.out.println(请输入要复制的文件的目录);String rootDirPath scanner.next();File rootDir new File(rootDirPath);if(!rootDir.exists()){return;}if(!rootDir.isFile()){return;}System.out.println(请输入要复制到的路径);String destDirPath scanner.next();File destDir new File(destDirPath);if(!destDir.exists()){return;}if(destDir.isDirectory()){return;}try(InputStream inputStream new FileInputStream(rootDir);OutputStream outputStream new FileOutputStream(destDir)){ byte[] buffer new byte[1024]; int b 0; while(true){b inputStream.read(buffer );if(b-1){break;}outputStream.write(buffer); } outputStream.flush();} catch (IOException e) {throw new RuntimeException(e);}} }⽰例3 扫描指定⽬录并找到名称或者内容中包含指定字符的所有普通⽂件不包含⽬录 注意我们现在的⽅案性能较差所以尽量不要在太复杂的⽬录下或者⼤⽂件下实验 import java.io.*; import java.util.ArrayList; import java.util.List; import java.util.Scanner;public class Demo853 {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.println(请输入要搜索的目录根节点);String rootDirPath scanner.next();File rootDir new File(rootDirPath);if(rootDir.isDirectory()){System.out.println(不是目录,退出);return;}System.out.println(请输入要搜索文件包含的名字);String token scanner.next();ListFile result new ArrayList();scanDir(rootDir,token,result);System.out.println(共找到了-);for (File file:result) {System.out.println(请问您是否需要删除该文件);String str scanner.next();if(str.toLowerCase().equals(yes)){file.delete();}}}private static void scanDir(File rootDir, String token, ListFile result) {File[] files rootDir.listFiles();if(filesnull || files.length0){return;}for (int i 0; i files.length; i) {if(files[i].isDirectory()){scanDir(files[i],token,result);}else if(true){ StringBuffer stringBuffer new StringBuffer(files[i].getName()); if(stringBuffer.indexOf(token) ! -1){result.add(files[i]); }}else if(isContain(files[i],token)){result.add(files[i].getAbsoluteFile());}}}private static boolean isContain(File file, String token) {StringBuffer stringBuffer new StringBuffer();try(InputStream inputStream new FileInputStream(file)){Scanner scanner new Scanner(inputStream);while(scanner.hasNext()){String str scanner.nextLine();stringBuffer.append(str);}} catch (FileNotFoundException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);}return stringBuffer.indexOf(token) ! -1;} }
http://www.zqtcl.cn/news/58702/

相关文章:

  • 外网建筑设计网站门户是什么意思
  • 北京网站建设公司如何排版wordpress pdf生成
  • 网站建设案列wordpress输出分类
  • 网站排版金融品牌网站设计
  • 如何对网站做进一步优化wordpress 代码生成二维码
  • 网站没有排名专业网站设计定制
  • 网站建设的有什么需求wordpress 高德地图
  • 购买服务器做网站企业做网站需要注意什么
  • 上海海宏建设集团网站wordpress 技术博客主题
  • 提供网站备案信息建筑设计公司取名字大全集
  • 爱站小工具圣经seo技术网网
  • 网站建设和维护pdf关于旅游电子商务网站建设论文
  • 网站负责人核验照久久建筑网碗扣式钢管脚手架安全技术规范
  • 西安企业建站系统模板开发网页游戏
  • 四川省建设工程网站wordpress知更鸟 破解
  • 装饰网站设计模板变色龙app制作平台
  • 建设网站联盟北京做家政网站有哪些平台
  • 做网站策划的工具网站建设费如何核算
  • 怎么做网站超链接专业网页制作的帮手
  • 湖南省专业建设公司网站的机构深圳高端网站定制公
  • 大连h5建站微信营销软件平台
  • 满满正能量网站外汇交易平台网站建设
  • 网站挑错做网站需要展示工厂么
  • 外贸公司手机网站民宿平台搜索量上涨
  • 长沙 公司网站城市建设网站设计
  • 建站教程流程图江门网站建设推广策划
  • 网站优化的策略大型网站建设兴田德润实惠
  • 网站公司如何推广网站2023年8月新闻热点事件
  • 做论坛网站价格做资源教程网站
  • 所有北京网站建设公司网站开发的策划方案