Java初级黄金体验 其二

引言:让我们看一下你的C盘有多少个文件和文件夹

初级 Java IO : 第一个纪念碑

小程序大致功能

让我们看一下E盘有多少个文件

上代码

最近太多的作业

代码可以无限改进,君子回头十年不晚,先写软工去

  1. package com.lxy.io;
  2. import java.io.File;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileReader;
  5. import java.io.FileWriter;
  6. import java.io.IOException;
  7. import java.util.Scanner;
  8. /**
  9. * 创建目录
  10. * @author lxy
  11. *
  12. * E:\aa\ff
  13. */
  14. public class IOt2 {
  15. //定义static属性
  16. static String check_fuc;
  17. static String op_name;
  18. //定义输入函数
  19. public static String shuru() {
  20. Scanner scanner = new Scanner(System.in);
  21. String key = scanner.nextLine();
  22. return key;
  23. }
  24. public static void main(String[] args) throws IOException {
  25. //基础输出
  26. System.out.println("*按Q/q进行一次操作||按其他键退出");
  27. String ss1 = shuru();
  28. while(ss1.equals("Q") || ss1.equals("q")) {
  29. //功能
  30. System.out.println(" -----------------------------------------");
  31. System.out.println("|创建新文件/文件夹--->1|删除文件/文件夹--->2|");
  32. System.out.println(" -----------------------------------------");
  33. System.out.println("|查找文件/文件夹----->3|打开文件/文件夹--->4|");
  34. System.out.println(" -----------------------------------------");
  35. check_fuc = shuru();
  36. switch(check_fuc) {
  37. case "1" :{
  38. System.out.println(" ---------------------------------");
  39. System.out.println("|创建新文件---->1|创建新文件夹---->2|");
  40. System.out.println(" ---------------------------------");
  41. String check_creat = shuru();
  42. switch(check_creat) {
  43. case "1": {
  44. System.out.println("*请输入所要创建的名称:");
  45. op_name = shuru();
  46. Fifo ff = new Fifo(op_name);
  47. ff.creatIt();
  48. break;
  49. }
  50. case "2" :{
  51. System.out.println("*请输入所要创建的名称:");
  52. op_name = shuru();
  53. Directory dr_tmp = new Directory(op_name);
  54. dr_tmp.creatIt();
  55. break;
  56. }
  57. }
  58. break;
  59. }
  60. case "2" :{
  61. System.out.println("*请输入所要删除的名称:");
  62. op_name = shuru();
  63. int tmp = checkName(op_name);
  64. if(tmp == 3) {
  65. System.out.println("文件不存在");
  66. }else if(tmp == 2) {
  67. Fifo ff_tmp = new Fifo(op_name);
  68. ff_tmp.deleteIt();
  69. }else {
  70. Directory dr_tmp = new Directory(op_name);
  71. dr_tmp.deleteIt();
  72. }
  73. break;
  74. }
  75. case "3" :{
  76. System.out.println("*请输入所要查找的名称:");
  77. op_name = shuru();
  78. File ff = new File(op_name);
  79. if(ff.exists()) {
  80. System.out.println(ff.getName()+"存在!");
  81. System.out.println("其位置在:"+ff.getAbsolutePath());
  82. }
  83. break;
  84. }
  85. case "4" :{
  86. System.out.println("*请输入要打开的文件名称");
  87. op_name = shuru();
  88. int tmp = checkName(op_name);
  89. if(tmp == 3) {
  90. System.out.println("文件不存在");
  91. }else if(tmp == 2) {
  92. System.out.println(" ---------------------------------");
  93. System.out.println("|查看内容---->1|增添/修改内容---->2|");
  94. System.out.println(" ---------------------------------");
  95. String cont = shuru();
  96. switch(cont) {
  97. case "1" :{
  98. viewFifo(op_name);
  99. break;
  100. }
  101. case "2" :{
  102. System.out.println(" ----------------------------");
  103. System.out.println("|增添内容---->1|修改内容---->2|");
  104. System.out.println(" ----------------------------");
  105. String mdf = shuru();
  106. switch(mdf) {
  107. case "1" :{
  108. appendFifo(op_name);
  109. break;
  110. }
  111. case "2": {
  112. modifyFifo(op_name);
  113. break;
  114. }
  115. }
  116. break;
  117. }
  118. }
  119. }else {
  120. printDirBasicMsg(op_name);
  121. }
  122. break;
  123. }
  124. }
  125. //基础输出
  126. System.out.println("按Q/q进行一次操作||按其他键退出");
  127. ss1 = shuru();
  128. }
  129. System.out.println("你已退出!");
  130. }
  131. //封装文件夹查看功能函数
  132. public static void printDirBasicMsg(String s) {
  133. Directory Dr = new Directory(s);
  134. System.out.println("该文件夹基本信息如下:");
  135. System.out.println("*大小:"+Dr.getDirLength()+"字节");
  136. System.out.println("*子文件夹数量:"+Dr.getDirChilddirNum()+"个");
  137. System.out.println("*子文件数量:"+Dr.getDirChildfileNum()+"个");
  138. System.out.println("*其子文件名称如下");
  139. // Dr.printContent(Dr.fd, 0);
  140. }
  141. //封装文件查看函数及其修改内容的功能
  142. public static void viewFifo(String s) throws FileNotFoundException {
  143. Fifo fo = new Fifo(s);
  144. fo.printContent();
  145. }
  146. //增加内容
  147. public static void appendFifo(String s){
  148. Fifo fo = new Fifo(s);
  149. fo.appendIt();
  150. }
  151. //修改内容
  152. public static void modifyFifo(String s){
  153. Fifo fo = new Fifo(s);
  154. fo.modifyIt();
  155. }
  156. //检查为文件夹/文件函数
  157. public static int checkName(String s) {
  158. int flag;
  159. File f_check = new File(s);
  160. if(f_check.isDirectory()) {
  161. flag = 1;
  162. } else if(f_check.isFile()) {
  163. flag = 2;
  164. }else {
  165. flag = 3;
  166. }
  167. return flag;
  168. }
  169. }
  170. //文件夹类
  171. class Directory{
  172. //
  173. private String path;
  174. //文件夹长度
  175. private int dirLength;
  176. //所有子文件夹的数量
  177. private int dirChilddirNum;
  178. //所有子文件的数量
  179. private int dirChildfileNum;
  180. public File fd;
  181. //
  182. public Directory(String s) {
  183. this.path = s;
  184. this.fd = new File(path);
  185. this.dirLength = 0;
  186. this.dirChilddirNum = 0;
  187. this.dirChildfileNum = 0;
  188. this.openFuc(fd);
  189. }
  190. //文件夹的大小以及子文件/文件夹的数量
  191. private void openFuc(File fd) {
  192. if(fd != null && fd.exists()) {
  193. if(fd.isFile()) {
  194. this.dirChildfileNum++;
  195. dirLength += fd.length();
  196. }else if(fd.isDirectory()) {
  197. this.dirChilddirNum++;
  198. if(fd.listFiles() != null)
  199. for(File f1:fd.listFiles())
  200. openFuc(f1);
  201. }
  202. }
  203. }
  204. //列出所有子文件夹和子文件
  205. public void printContent(File f,int deep) {
  206. for(int i = 0; i < deep; ++i) {
  207. System.out.print("-");
  208. }
  209. System.out.println(f.getName());
  210. if(f == null||!f.exists()) {
  211. return ;
  212. }else if(f.isDirectory()) {
  213. if(f.listFiles() != null)
  214. for(File f1:f.listFiles()) {
  215. printContent(f1,deep+1);
  216. }
  217. }
  218. }
  219. //创建文件夹
  220. public void creatIt() {
  221. if(fd.mkdirs()) {
  222. System.out.println("*创建文件夹成功!");
  223. }else if(fd.exists()) {
  224. System.out.println("*文件夹已存在请勿重复创建!");
  225. }else {
  226. System.out.println("*创建失败!");
  227. }
  228. }
  229. //删除文件夹
  230. public void deleteIt() {
  231. if(fd.delete()) {
  232. System.out.println("*文件夹"+fd.getName()+"已删除!");
  233. }else {
  234. System.out.println("*删除失败!");
  235. }
  236. }
  237. public int getDirLength() {
  238. return dirLength;
  239. }
  240. public int getDirChilddirNum() {
  241. return dirChilddirNum;
  242. }
  243. public int getDirChildfileNum() {
  244. return dirChildfileNum;
  245. }
  246. }
  247. class Fifo{
  248. private String path;
  249. File fdd;
  250. FileReader fread;
  251. FileWriter fwriter;
  252. //构造器
  253. Fifo(String s){
  254. this.path = s;
  255. fdd = new File(path);
  256. }
  257. //查看文件内容
  258. public void printContent() throws FileNotFoundException {
  259. System.out.println("*文件已打开,内容如下");
  260. fread = new FileReader(fdd);
  261. char[] a = new char[100];
  262. try {
  263. fread.read(a);
  264. } catch (IOException e) {
  265. // TODO Auto-generated catch block
  266. e.printStackTrace();
  267. }
  268. for(char tmp : a) {
  269. System.out.print(tmp);
  270. }
  271. try {
  272. fread.close();
  273. } catch (IOException e) {
  274. // TODO Auto-generated catch block
  275. e.printStackTrace();
  276. }
  277. System.out.println("-------------------------");
  278. }
  279. //增添文件内容
  280. public void appendIt() {
  281. Scanner scanner_tmp = new Scanner(System.in);
  282. System.out.println("*请在下方输入你要添加的内容");
  283. String tmp = scanner_tmp.nextLine();
  284. try {
  285. fwriter = new FileWriter(this.fdd,true);
  286. } catch (IOException e) {
  287. // TODO Auto-generated catch block
  288. e.printStackTrace();
  289. }
  290. try {
  291. fwriter.write(tmp);
  292. fwriter.flush();
  293. fwriter.close();
  294. } catch (IOException e) {
  295. // TODO Auto-generated catch block
  296. e.printStackTrace();
  297. }
  298. System.out.println("*文件内容添加成功");
  299. }
  300. //修改文件内容
  301. public void modifyIt() {
  302. Scanner scanner_tmp = new Scanner(System.in);
  303. System.out.println("*请在下方输入你要修改的内容");
  304. String tmp = scanner_tmp.nextLine();
  305. try {
  306. fwriter = new FileWriter(this.fdd,false);
  307. } catch (IOException e) {
  308. // TODO Auto-generated catch block
  309. e.printStackTrace();
  310. }
  311. try {
  312. fwriter.write(tmp);
  313. fwriter.flush();
  314. fwriter.close();
  315. } catch (IOException e) {
  316. // TODO Auto-generated catch block
  317. e.printStackTrace();
  318. }
  319. System.out.println("*文件内容修改成功");
  320. }
  321. //创建文件
  322. public void creatIt() throws IOException {
  323. if(fdd.createNewFile()) {
  324. System.out.println("*创建新文件成功!");
  325. }else if(fdd.exists()){
  326. System.out.println("*文件"+fdd.getName()+"已存在!");
  327. }else {
  328. System.out.println("*创建新文件失败!");
  329. }
  330. }
  331. //删除文件
  332. public void deleteIt() {
  333. if(fdd.delete()) {
  334. System.out.println("*文件"+fdd.getName()+"已删除!");
  335. }else {
  336. System.out.println("*删除失败!");
  337. }
  338. }
  339. }

Java初级黄金体验 其二的更多相关文章

  1. Java初级黄金体验 其一

    关于作者 作者背景:公元2001年,意大利那不勒斯少年,为了达成梦想,在国庆的三天发现自己替身能力Java.从而加入了黑手党组织,并成为...... 作者目的:入门Java 为了Fighting Go ...

  2. JAVA 11初体验

    JAVA 11初体验 随着JAVA没半年发布一次新版本,前几天JAVA 11隆重登场.在JAVA 11中,增加了一些新的特性和api, 同时也删除了一些特性和api,还有一些性能和垃圾回收的改进. 作 ...

  3. Java 初级软件工程师 认证考试试卷1

    Java 初级软件工程师 认证考试试卷   笔试(A卷)   考试时间150分钟 总分 100分     姓    名_______________________ 身份证号_____________ ...

  4. 引用面试官文章 :如何准备Java初级和高级的技术面试

    本人最近几年一直在做java后端方面的技术面试官,而在最近两周,又密集了面试了一些java初级和高级开发的候选人,在面试过程中,我自认为比较慎重,遇到问题回答不好的候选人,我总会再三从不同方面提问,只 ...

  5. Java初级进阶中高级工程师必备技能

    很多人学了javase以为自己学的已经很OK了,但是其实javase里边有很多的知识点是你不知道的,不管你找的是哪里的javase的视频,大多数是不会讲这些东西,而这些东西你平时业务又不会主动去接触, ...

  6. 在Service Fabric上部署Java应用,体验一把微服务的自动切换

    虽然Service Fabric的Java支持版本还没有正式发布,但是Service Fabric本身的服务管理.部署.升级等功能是非常好用的,那么Java的开发者可以如何利用上Service Fab ...

  7. 【阿里云产品公测】开放搜索服务 opensearch java jdk 应用体验之 机器人聊天

    作者:阿里云用户啊里新人 需求:基本实现智能聊天! 最近在开发一款机器人,希望实现基本的聊天功能,词库是有的,但是如果是做完全匹配这个出来的效果很悲催,   比如词库:你好,回答是:哈哈,很好啊. 如 ...

  8. Java Builder模式 体验(二)

       在上篇文章中,对Java Builder模式的使用体验主要是从Builder对构造器改造方面的优秀特性来说的,感觉并没有从Java Builder模式本身的功能和作用去写,因此决定再从Build ...

  9. 阿里巴巴Java开发规约插件-体验

    插件有哪些功能? 阿里技术公众号于今年的2月9日首次公布<阿里巴巴Java开发规约>,瞬间引起全民代码规范的热潮,上月底又发布了PDF的终极版,大家踊跃留言,期待配套的静态扫描工具开放出来 ...

随机推荐

  1. kubernetes 配置网络插件 flannel

    概述 在学习docker时知道docker有四种常用的网络模型 bridge:桥接式网络 joined:联盟式网络,共享使用另外一个容器的网络名称空间 opened:容器直接共享使用宿主机的网络名称空 ...

  2. Linux下用的脚本

    http://blog.itpub.net/29510932/viewspace-1166603/ 批量启动Tomcat 点击(此处)折叠或打开 #!/bin/bash #JDK路径 export J ...

  3. redis实现的简单令牌桶

    这里给出的令牌桶是以redis单节点或者集群为中间件. 不过, 这里的实现比较简单, 主要提供两个函数, 一个用于消费令牌, 一个用于添加令牌. 这里, 消费令牌和添加令牌都是通过lua来保证原子性. ...

  4. Linux-排JOB定时任务

      排job的3种方法,at方法只能执行一次,crontab可循环执行比较灵活,anacrontable可以检测job是否正常执行,没有执行就会重新执行比较智能一些,但是要执行的指令脚本要 放到相应的 ...

  5. LNMP - Warning: require(): open_basedir restriction in effect错误解决方法

    LNMP 1.4或更高版本如果不想用防跨目录或者修改.user.ini的防跨目录的目录还需要将 /usr/local/nginx/conf/fastcgi.conf 里面的fastcgi_param ...

  6. array_push

    array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度. 该函数等于多次调用 $array[] = $value. 1:即使数组中有字符串键名,您添加的元 ...

  7. 高并发下redis

    1.================================================================================================== ...

  8. 剑指Offer(三十五):数组中的逆序对

    剑指Offer(三十五):数组中的逆序对 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/bai ...

  9. 安装k8s,高可用3 master安装脚本

    每个在新集群里,记得更改三个节点的IP即可. 第一步还是要执行那个root脚本,准备好系统环境,安装好软件. 先安装在每个节点上使用docker安装好etcd.(sh script domain et ...

  10. Easy sssp(spfa判负环与求最短路)

    #include<bits/stdc++.h> using namespace std; int n,m,s; struct node{ int to,next,w; }e[]; bool ...