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

高端网站建设设计3d建模下载

高端网站建设设计,3d建模下载,wordpress 显示最新文章标题,做网站排版用什么软件写在前 终于完成了#xff01;#xff01;#xff01;#xff01;内容不多就是本人太拖拉#xff01; 这里主要介绍文件input#xff0c;output操作。File类#xff0c;流对象#xff08;分为字节流、字符流#xff09; 需要掌握每个流对象的使用方式#xff1a;打…写在前 终于完成了内容不多·就是本人太拖拉 这里主要介绍文件inputoutput操作。File类流对象分为字节流、字符流 需要掌握每个流对象的使用方式打开、读写、关闭 熟练使用API并知道这些API起到的效果 这里涉及到的经典面试题需要注意 抽象类和接口的区别[4.2] 还需要重点去看的一个是4.2.8中的案例一重点体会其中的递归·操作 目录 文件操作--IO 1.认识文件 1.1狭义上的文件 1.2广义上的文件 2.文件路径 2.1绝对路径 2.2相对路径 3.文件类型 3.1文本文件 3.2二进制文件 4.Java中操作文件 4.1File类 4.1.1属性 4.1.2构造方法 4.1.3代码示例 1获取相应的路径 2普通文件的创建 ​3普通文件的删除 4创建目录 5文件重命名 4.2文件内容操作 经典面试题--- 抽象类和接口什么区别 4.2.1使用字节流来读取文件 1完整代码展示 2buffer版本代码 4.2.2使用字节流来写文件 完整代码实现 4.2.3怎样理解这里说的读与写【约定】 ​4.2.4关于close操作 1理解 ​2如果close操作没写会如何 3确保close被执行 try-ctach try with resources 4.2.5使用字符流读文件 完整代码展示 4.2.6使用字符流写文件 1完整代码展示 2flush-冲刷 ​4.2.7Scanner 4.2.8两个小案例的实现 1扫描指定目录 2文件拷贝 文件操作--IO 1.认识文件 1.1狭义上的文件 硬盘上的文件和目录文件夹  本篇博客记录的就是狭义上的文件。 1.2广义上的文件 泛指计算机中的很多软硬件资源。操作系统中把很多的硬件设备和软件资源抽象成文件按照文件的方式统一管理。 2.文件路径 2.1绝对路径 以c:  d:  盘符开头的路径 2.2相对路径 以当前所在的目录为基准以 . 或者 .. 开头.有时可以省略找到指定的路径。【当前所在的目录称为是工作目录每个程序运行的时候都有一个工作目录在控制台里通过命令操作的时候是特别明显的后期进化到图形化界面工作目录就不那么直观了。】 举个例子如下图假定当前的工作目录是 f:/Code,定位到111这个目录上就可以表示为 ./111    其中./表示为当前的目录  如果工作目录不同定位到同一个文件相对路径的写法是不同的。 我们同样希望定位到  111 这里 几种相对路径的写法 工作目录相对路径f:/./Code/111f:/Code./111f:/Code/222../111f:/Code/222/bbb../../111 ../表示当前目录的上级目录。 3.文件类型 wordexe;图片视频音频源代码动态库等等这些不同的文件整体可以归纳为两类 3.1文本文件 存的是文本字符串【字符串由字符构成每个字符都是通过一个数字来表示的。这个文本文件里存储的数据一定是合法的都是在指定字符编码的码表之内的数据。】 3.2二进制文件 存的是二进制数据不一定是字符串【没有任何限制可以存储任何想要的数据。】 小思考  当我们有一个文件如何区分是文本文件还是二进制文件 直接使用记事本打开如果乱码了就说明是二进制文件如果没有乱码就是文本。 4.Java中操作文件 主要有两类操作第一类是针对文件系统的操作文件的创建、删除、重命名第二类是针对文件内容操作文件的读和写。 Java中通过java.io.File类来对一个文件包括目录进行抽象的描述有File对象并不代表真实存在该文件。 4.1File类 4.1.1属性 修饰符及类型属性说明static StringpathSeparator依赖于系统路径分隔符String类型的表示static charpathSeparator依赖于系统的路径分隔符char类型的表示 4.1.2构造方法 签名说明FileFile parent,String child根据父目录孩子文件路径创建一个新的File实例FileString pathname根据文件路径创建一个新的File实例路径可以是绝对路径或者是相对路径FileString parent,String child 根据父目录孩子文件路径创建一个新的File实例父目录用路径表示 parent表示当前文件所在的目录child是自身文件名。 在new File对象的时候构造方法参数中可以指定一个路径此时File对象就代表这个路径对应的文件。 4.1.3方法【不需要背】 返回修饰符及返回值类型方法签名说明Stringgetparent()返回File对象父目录文件路径StringgetName()返回File对象的纯文件名称StringgetPath()返回File对象的文件路径StringgetAbsolutePath()返回File对象的绝对路径String getCanonicalPath() 返回File对象的修饰过的绝对路径【绝对路径更加化简的表示方式】booleanexists()判断File对象描述的文件是否真实存在booleanisDirectory()判断File对象代表的文件是否是一个目录booleanisFile()判断File对象代表的文件是否是一个普通文件booleancreateNewFile()根据File对象自动创建一个空文件。成功创建后返回truebooleandelete()根据File对象删除该文件。成功删除后返回truevoiddeleteOnExit()根据File对象标注文件将被删除删除动作会到JVM运行结束后才会进行String[]list()返回File对象代表的目录下的所有文件名File[]listFiles()返回File对象代表目录下的所有文件以File对象表示booleanmkdir()创建File对象代表的目录booleanmkdirs()创建File对象代表的目录如果必要会创建中间目录boolean renameTo(File dest) 进行文件改名也可以视为我们平时的剪切、粘贴操作boolean canRead() 判断用户是否对文件有可读权限booleancanWrite()判断用户是否对文件有可写权限 4.1.3代码示例 1获取相应的路径 public class IOD1 {public static void main(String[] args) throws IOException {File file new File(d:/test.txt);//这里的路径不需要真实的存在、System.out.println(file.getPath());System.out.println(file.getName());System.out.println(file.getParent());System.out.println(file.getAbsolutePath());System.out.println(file.getCanonicalPath());} } 运行输出结果 2普通文件的创建 public class IOD2 {public static void main(String[] args) throws IOException {File file new File(d:/hello.txt);System.out.println(file.exists());System.out.println(file.isFile());System.out.println(file.createNewFile());System.out.println(file.isDirectory());System.out.println(file.isFile());} } 运行输出结果 3普通文件的删除 public class IOD3 {public static void main(String[] args) {File file new File(d:/hello.txt);System.out.println(file.delete());} } 运行输出结果 延申关于deleteOnExit 不会立即删除是在程序运行完关闭之后才进行的删除。 4创建目录 需要注意的是mkdir  mk是make的缩写 public class IOD4 {public static void main(String[] args) {File dir new File(d:/study);dir.mkdir();} } 运行程序后就会在d盘生成一个名字为study的文件夹。 如果我们想创建多级目录。例如创建d:/test/aaa/bbb,需要使用makedirs。 public class IOD4 {public static void main(String[] args) {File d new File(d:/aaa/ddd/m);d.mkdirs();} } 运行后的文件夹显示 5文件重命名 public class IOD5 {public static void main(String[] args) {File dest new File(./testAAA);File file new File(./test);dest.renameTo(file);} }创建一个名为testAAA的文件和一个名为test的文件将testAAA改名为test; 4.2文件内容操作 针对文件内容使用流对象进行操作。[流对象 可以类比于 水流] Java标准库的流对象从类型上可以分为两个大类一类是字节流一类是字符流。 字节流[操作二进制文件]InputStream   OutputStream  (FileInputStream FileOutputStream)     字符流[操作文本数据]Reader Writer(FileReader FileWriter ) 这些类的使用方式是非常固定的核心操作就是四个 1打开文件[构造对象] 2关闭文件[close] 3读文件[read针对InputStream 和 Reader] 4写文件[write针对OutputStream和Writer] 需要注意的是InputStream   OutputStream  Reader Writer 都是抽象类不能直接new 经典面试题--- 抽象类和接口什么区别 抽象类比接口更抽象抽象类的功能比接口更多。抽象类和普通的类相比差别不大只不过抽象类不能new实例带有抽象方法。抽象类可以有普通方法也可以有抽象的方法。大部分的东西都是确定的有几个属性有几个方法大部分都是明确的只有一小部分是抽象方法。 接口里面都是抽象方法接口中大部分都是不确定的有什么属性都不知道方法也都是抽象方法不考虑default的情况 因此接口提供的信息更少视为接口比抽象类更抽象。 4.2.1使用字节流来读取文件 1完整代码展示 public class IOD6 {//使用字节流来读取文件public static void main(String[] args) throws IOException {InputStream inputStream new FileInputStream(f:/test.txt);while(true){int b inputStream.read();if(b -1){break;}System.out.println((byte)b);}inputStream.close();} } 输出结果 read() 一次读一个字节但是这里使用的是int类型原因因为要表述”读取完毕“这样的情况看起来是int其实是byte把int转为byte进行使用另外需要判断当前的值是否是-1是-1说明读取完毕也就可以结束循环了。 2buffer版本代码 public class IOD6 {//使用字节流来读取文件public static void main(String[] args) throws IOException {InputStream inputStream new FileInputStream(f:/test.txt);while (true) {byte[] buffer new byte[1024];int len inputStream.read(buffer);if (len -1) {break;}for (int i 0; i len; i) {System.out.printf(%x\n, buffer[i]);}}inputStream.close();} } 一次读1024个字节并使用十六进制形式打印出来。 buffer理解 缓冲区缓和冲突减少冲击的次数 存在的意义为了提高IO的操作效率单词的IO操作就是要访问硬盘/IO设备单次操作是比较消耗时间的如果频繁的进行这样的IO操作耗时肯定就更多了。 单次IO时间是一定的如果缩短IO的次数此时就可以提高程序整体的效率了。 以上第一个版本的代码是一次读一个字节循环次数就比较高read次数也很高 第二个版本的代码是一次读1024个字节循环次数就降低了很多read次数变少了。 4.2.2使用字节流来写文件 写文件有三个版本 完整代码实现 public class IOD7 {//进行写文件public static void main(String[] args) throws IOException {OutputStream outputStream new FileOutputStream(f:/test.txt);outputStream.write(97);outputStream.write(98);outputStream.write(97);outputStream.write(98);outputStream.close();} } 现在在我们的f盘txt文件夹中的内容是 当我们运行程序后再次打开txt文件看到运行结果 可以看到的是记事本中的内容发生了改变输入的内容分别对应a和b的ASCII码值。 需要注意的是在outputStream进行写操作的时候总是将文件中的内容进行清空再进行写入如果不想清空需要进行“追加写”操作。 4.2.3怎样理解这里说的读与写【约定】 4.2.4关于close操作 1理解 close关闭文件释放资源。 进程在内核里使用PCB这样的数据结构来表示进程。 一个线程可以对应一个PCB一个进程可以对应一个PCB也可以对应多个。 PCB有一个重要的属性是文件描述符表。相当于一个数组记录了该进程打开了哪些文件即使一个进程里面有多个PCB也没关系这些PCB共用同一个文件描述符表。 2如果close操作没写会如何 如果没有close对应的表项没有及时释放虽然Java有GCGC操作会在回收这个outputStream对象的时候去完成释放操作但是GC不一定及时如果不手动释放会导致文件描述符表可能很快被占满文件描述符表不能自动扩容是存在上线的再次打开文件就会打开失败。 close一般来说是要执行的但是如果程序要自始至终的使用不关闭的问题也是不大的随着进程结束PCB销毁文件描述符表也被销毁了对应的资源操作系统就自动回收。如果close后程序立刻结束不执行close也没关系但是在写代码的过程中还是需要注意这个close如何确保close被执行到 3确保close被执行 try-ctach 我们首先可以想到的是使用try-catch执行 可以但是不够美观更推荐的一种写法是将变量的定义写到try 里面后面将不需要写close语句。 try with resources 没有显式的写close但是实际上是会执行close的只要try语句块执行完毕就可以自动的执行到close这个语法在Java中被称为是try with resources。 注意不是随便拿一个对象放到try里面就可以自动释放的需要满足的要求是实现Closeable接口才可以。这个接口提供的方法就是close方法。 4.2.5使用字符流读文件 完整代码展示 public class IOD8 {public static void main(String[] args) {try(Reader reader new FileReader(f:/test.txt)) {while(true){int ch reader.read();if(ch -1){break;}System.out.println( (char)ch);}} catch (IOException e) {e.printStackTrace();}} } 输出结果 如果输入汉字不能正确读取的话可能是编码的问题需要改为utf-8编码。 4.2.6使用字符流写文件 1完整代码展示 public class IOD9 {public static void main(String[] args) {//使用字符流写一个字符串try(Writer writer new FileWriter(f:/text.txt)){writer.write(hello123);} catch (IOException e) {e.printStackTrace();}} } 有的时候可以发现写的文件内容没有真的在文件中出现很大可能是缓冲区的问题。 类似于这样的操作其实是先写到缓冲区中缓冲区有很多种形态自己写的代码中有缓冲区标准库中也可以有缓冲区操作系统内核中也存在缓冲区在写操作执行完后内容可能在缓冲区中还没真正的进入硬盘。 close操作会触发缓冲区的“冲刷”冲刷操作就是把缓冲区里的内容写到硬盘中 2flush-冲刷 除了close之外也可以通过flush方法也可以起到刷新缓冲区的效果。close操作后就关闭用不了了flush操作还可以继续使用。 4.2.7Scanner 点进去可以发现inputStream输入流对象【字节流】 Scanner不仅仅可以针对键盘的输入进行读取。 public class IOD10 {public static void main(String[] args) {//Scanner scanner new Scanner(System.in);try(InputStream inputStream new FileInputStream(f:/test.txt)){Scanner scanner new Scanner(inputStream);scanner.next();}catch (IOException e){e.printStackTrace();}} } Scanner的close本质上是要关闭内部包含的这个流对象此时内部的inputStream对象已经被try关闭了里面的这个Scanner不关闭也是没问题的。 4.2.8两个小案例的实现 1扫描指定目录 找到名称中包含指定字符的所有普通文件不包含目录并且询问是否要删除该文件 完整代码实现 public class IOD11 {private static Scanner scanner new Scanner(System.in);public static void main(String[] args) {//首先让用户输入一个指定搜索的目录// Scanner scanner new Scanner(System.in);System.out.println(请输入要搜索的路径);String basePath scanner.next();//针对用户的输入进行一个简单的判定File root new File(basePath);//判断是不是目录if(!root.isDirectory()){//路径不存在或者只是一个普通文件。无法进行搜索System.out.println(当前输入的目录错误);return;}//让用户再输入一个要删除的文件名System.out.println(请输入要删除的文件名);//此处使用的是next来读字符串而不是nextln!!//next是读到空白符就算是读完了。空白符包括换行也可以是制表符回车符//nextln仅仅是去找换行符//在控制台中nextln是很难控制的String nameToDelete scanner.next();//针对指定的路径进行扫描【递归操作】//从根目录出发root//先判断一下当前的这个目录中是否包含要删除的文件存在即删除否则继续下一个//如果当前目录中包含了一些目录则针对子目录进行递归scanDir(root,nameToDelete);}private static void scanDir(File root, String nameToDelete) {System.out.println([scanDir] root.getAbsolutePath());//1.首先列出当前目录下包含的内容File[] files root.listFiles(); //看一下当前的目录中有啥好比文件资源管理器双击目录打开if(files null){//当前root目录下没东西是一个空目录//结束继续递归return;}//2.遍历当前的列出结果for(File f:files){if(f.isDirectory()){//如果是目录就进一步递归scanDir(f,nameToDelete);}else{//如果是普通文件判定是否要删除if(f.getName().contains(nameToDelete)){System.out.println(确认删除 f.getAbsolutePath());String choice scanner.next();if(choice.equals(y) || choice.equals(Y)){f.delete();System.out.println(删除成功);}else{System.out.println(取消删除操作);}}}}} } 控制台输出结果 需要注意的是 这里使用File对象表示列出的结果结果有多个使用数组表示。相当于看一下当前的目录中有什么打开文件资源管理器文件资源管理器中显示的这些结果就相当于是listFiles得到的内容。 list方法也有类似的功效但是list得到的只是String类型的文件名。 2文件拷贝 把第一个文件按照字节依次读取把结果写入到另一个文件中。 需要构建“源路径”和”目标路径“两个路径对于源路径来说要看源是不是存在对于目标路径来说要看目标路径是不是不存在。 需要注意一下代码中读一个字节写一个字节的部分 完整代码实现 public class IOD12 {public static void main(String[] args) {//输入两个路径//第一个路径表示拷贝谁源-src第二个路径表示需要拷贝到哪里去目的-destScanner scanner new Scanner(System.in);System.out.println(请输入要拷贝哪个文件);String srcPath scanner.next();System.out.println(请输入要拷贝到哪个地方);String destPath scanner.next();//针对路径进行判定File srcFile new File(srcPath);if(!srcFile.isFile()){//如果源不是一个文件是个目录或者不存在//此时就不做任何操作System.out.println(当前输入的源路径错误);return;}File destFile new File(destPath);if(destFile.isFile()){//如果已经存在了认为也不能拷贝System.out.println(当前输入的目标路径错误);return;}//进行拷贝操作//try语法支持多个流对象写几个都可以进行关闭//多个流对象之间使用分号进行分割就可以try(InputStream inputStream new FileInputStream(srcFile);OutputStream outputStream new FileOutputStream(destFile)) {//进行读文件操作while(true){//读一个字节写一个字节int b inputStream.read();if(b -1){break;}outputStream.write(b);}} catch (IOException e) {e.printStackTrace();}} }OutputStream在进行写文件的时候文件不存在就会自动创建。 InputStream不行文件不存在就会抛异常了。 到这里文件IO部分就大体结束啦下一部分将开启网络部分的内容~
http://www.w-s-a.com/news/191133/

相关文章:

  • 家政服务网站做推广有效果吗做图软件ps下载网站有哪些
  • 北京市建设教育协会网站flash网站制作单选框和复选框ui组件
  • 国外有没有做问卷调查的网站网站网页怎么做
  • 简单个人网站模板下载网站建设整体情况介绍
  • 网站建设做到哪些内容荆门网站建设电话咨询
  • 玉树网站建设公司双11主机 wordpress 2015
  • dw做网站背景图片设置汕头seo管理
  • 个人又什么办法做企业网站唐山哪里建轻轨和地铁
  • 手机网站404页面室内设计公司排名前100
  • 做民宿需要和多家网站合作吗创建软件的步骤
  • 网站导航栏设计要求辽宁省住房和城乡建设厅
  • 海外网站平台腾讯营销平台
  • 东道网站建设良品铺子网络营销案例
  • 免费企业查询软件优化模型
  • 兰亭集势的网站平台建设凡科网站免费版怎么做
  • 在网站做推广要钱吗网站根目录是哪个文件夹
  • 网站建设如何弄链接海外vps一键配置WordPress
  • 1个ip可以做几个网站吗动画制作可以自学吗
  • 顺德建设局网站如何搭建网站
  • 精品网站建设费用 干净磐石网络网页制作简单作业
  • 网站建设需要用软件群晖怎样做网站
  • 网站建设公司有哪博客网站建设方案书
  • 服装商城的网站建设宿迁论坛
  • 网站建设服务市场趋势淮南市网站开发的方式
  • 交互设计包含网站设计wordpress和discuz共存
  • 淮阳城乡建设局网站在线网页翻译软件
  • 什么是电商视觉设计郑州seo服务
  • google网站设计原则青海网站建设与管理
  • 简述网站的创建流程广西网站建设定制
  • 唐河网站制作汉中建设工程招标新闻中心