Java学习作业(14.4.21)

前三次作业都是基础语法。真的好水啊。从这次开始记录。

1.编写Java程序,把当前目录下扩展名为txt的文件的扩展名全部更名为back。


 1 import java.io.*;
2 import java.lang.*;
3
4
5 public class Home {
6
7 public void reName(String path, String from, String to) {
8 File f = new File(path);   //声明File对象,用于导入修改路径
9 File[] fs = f.listFiles();   //声明File对象数组,用于存储f目录下的文件
10 for (int i = 0; i < fs.length; ++i) {
11 File f2 = fs[i];     //通过对各个文件的遍历,通过f2 取出各个文件
12 if (f2.isDirectory()) {
13 reName(f2.getPath(), from, to); //如果f2 是一个目录,则递归调用reName,更改子目录中的文件
14 } else {
15 String name = f2.getName();
16 if (name.endsWith(from)) { //否则更改该文件下文件
17 f2.renameTo(new File(f2.getParent() + "/" + name.substring(0, name.indexOf(from)) + to));
18 }
19 }
20 }
21
22 System.out.print("文件修改成功 \n");
23 System.out.print("请到文件目录下查看修改:\n");
24 }
25
26 public static void main(String[] args) {
27 Home rf = new Home();
28 rf.reName("D:\\Desgard_Duan\\作业\\", ".txt", ".back");
29 }
30 }

(一开始用eclipse成功运行,但是用控制台一直报“NullPointerError”,在9行后增加了如下代码,成果解决。感谢憨大哥。)

1 if (fs == null) {
2 System.out.println("目录中无法获取文件,程序退出。");
3 System.exit(0);
4 }

2.
编写程序,用命令行参数实现比较两个文件是否长度和内容完全相同,输出比较结果(用Yes和No表示)。


 1 import java.io.*;
2 import java.lang.*;
3
4
5 public class Home2 {
6 private String file1 = null; //用来存储对比的两个文件名
7 private String file2 = null;
8
9 public Home2(String file1, String file2) {
10 this.file1 = file1;
11 this.file2 = file2;
12 }
13
14 private void cmpFile(String file1, String file2) {
15 try {
16 BufferedInputStream inFile1 = new BufferedInputStream(new
17 FileInputStream(file1));
18 BufferedInputStream inFile2 = new BufferedInputStream(new
19 FileInputStream(file2));
20 //long startTime = System.currentTimeMillis(); //计算毫秒数
21 if(inFile1.available() == inFile2.available()) {
22 while(inFile1.read() != -1 && inFile2.read() != -1) { //如果文件没有读取到文件结尾处
23 if(inFile1.read() != inFile2.read()) {
24 System.out.println("No");
25 break;
26 }
27 }
28 System.out.println("Yes");
29 } else {
30 System.out.println("No");
31 }
32 inFile1.close();
33 inFile2.close();
34 System.exit(0);
35 } catch(IOException error) {
36 error.printStackTrace();
37 }
38 }
39
40 private static String inputFileName() {
41 String fileName = null;
42 BufferedReader buffRead1 = new BufferedReader(new InputStreamReader(System.in)); //通过缓存方式读取文本,由Reader类扩展而来
43 try {
44 fileName = buffRead1.readLine();
45 } catch(IOException error) {
46 error.printStackTrace();
47 }
48 return fileName;
49 }
50
51 public static void main(String[] args) {
52 System.out.println("please input the two files‘ full path and name:");
53 System.out.print("File1:");
54 String file1 = inputFileName();
55 System.out.print("File2:");
56 String file2 = inputFileName();
57 Home2 fileCompare = new Home2(file1, file2);
58 fileCompare.cmpFile(file1, file2);
59 }
60 }

(此题没有什么难度,只要用学会文件读取,逐个字符进行检查即可。在编写包内类的时候,最好的习惯是给每个成员写入set和get方法,笔者有些偷懒。)

3.编写控制台(字符界面)应用程序,实现文件按字节异或加密。要求输入一字节密钥key和源文件名。建立加密文件,加密文件第1字节为密钥key,以后各字节为源文件各字节与密钥进行异或运算的结果编写另程序实现解密(由加密文件还原源文件)。此题鼓励同学自拟图形界面,综合运用对话框或视窗、文件对话框、多种Component、事件响应来实现加密解密功能。

(对于UI掌握以及文件加密掌握不太熟悉,之后会完成。先进行后面的作业。)

4.
输入打印行数n,打印如下字符图形到屏幕上和字符文件abc.txt中。


 1 import java.io.*;
2 import java.lang.*;
3 import java.util.*;
4
5
6 public class Home4 {
7 public static void WriteStringToFile(String filePath, String text) {
8 try {
9 File file = new File(filePath);
10 PrintStream ps = new PrintStream(new FileOutputStream(file));
11 ps.println(text);
12 } catch (FileNotFoundException error) {
13 error.printStackTrace();
14 }
15 }
16 public static void main(String[] args) {
17 Scanner in = new Scanner(System.in);
18 int n = in.nextInt();
19 String text = "";
20 int num = 1;
21 for(int i = 1; i <= n; i++) {
22 for(int j = 0; j < n - i; j++) {
23 System.out.print("\t");
24 text += "\t";
25 }
26 for(int j = 1; j <= i; j++) {
27 System.out.print(num + "\t");
28 text += String.valueOf(num);
29 text += "\t";
30 num += 2;
31 }
32 System.out.println();
33 text += "\r\n";
34 }
35 WriteStringToFile("abc.txt", text);
36
37 }
38
39 }

(最简单的一道作业题目,不多说。)

收获:通过独立完成java课堂题目,了解了java的基本文件的方法,熟悉了处理文件十分基础的API。希望自身不断提高,争取熟练掌握文件控制。

Desgard_Duan 写于2014.4.27

Java学习作业(14.4.21),码迷,mamicode.com

时间: 2024-12-26 09:53:54

Java学习作业(14.4.21)的相关文章

Java学习笔记14

Object类是所有类.数组.枚举类的父类,是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括 数组)都实现这个类的方法. Object类实现了以下方法: 我们来看看源码中clone()方法是如何定义的: protected native Object clone() throws CloneNotSupportedException; 我们看到clone()方法前用了native来修饰,说明native方法的效率一般来说高于Java中的非native方法.其次用了 prote

我的java学习笔记(14)关于反射(part 3)

1.java.lang.reflect包中的Array类允许动态地创建数组. 2.在调用Array类中的静态方法newInstance是需要提供两个参数,一个是数组的元素类型,一个是数组的长度. 3.Class类的getComponentType方法可以确定数组对应的类型. 4.整型数组类型int[]可以被转换成Object,但不能转换成对象数组. 相关的实例代码 import java.lang.reflect.*; import java.util.*; public class test

java学习笔记—HttpServletResponse(21)

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { // 获取字节流对象 ServletOutputStream out = response.getOutputStream(); // 获取字符流对象 PrintWriter writer = response.getWriter(); out.write("image&

java 学习第14课,Android 布局

布局分4种: 1. LinearLayout (线性布局) file:///H:/tool/01/Android/android-sdk-windows/docs/guide/topics/ui/layout/linear.html 事例代码: 2. RelativeLayout (相对布局) 3. TableLayout (表格布局) 4. FrameLayout (帧布局) 就像gif图片一样,或者可以理解成层,可以叠加在一起

9/15-9/21 java学习总结(课堂及课后学习总结) &实验总结2

9/15-9/21 java学习总结(课堂及课后学习总结) &实验总结2 String类两种实例方法及区别 第一种方法是通过直接赋值的方式,另外一种方法是调用构造方法完成实例化.. 区别:第一种方法的话一个字符串被一个名称引用过后如果再有相同的字符串声明时,就不用再重新开辟空间.第二种方法的话每次引用字符串都必须要重新开辟空间. StringBuffer类 String对象一经声明,便不能修改它的内容,修改的只是引用的地址:而StringBuffer对象是可以改变它的内容的 StringBuff

&nbsp; 我的java学习 の 数组作业

  class 数组作业{/********1.1永远在第一行的中间: 2.下一个数,永远填在右上角: 3.若右上角没位置了,要转头(两种情况) 4. 若遇到n的倍数,一个数,直接填在它的下方. ********/public static void main(String[] args){ int n=11; int[][] a= new int[n][n]; int i=0; int j=n/2; a[i][j]=1; for(int k=2; k<=n*n;k++){ if(a[i][j]

Java学习笔记之接口

一.接口的概念与定义 首先考虑一个简单的接口的定义: public interface Output { int MAX_LINE = 40; void out(); void getData(String msg); } 定义接口使用关键字interface 修饰符interface前面的public可以省略,如果省略,则采用默认访问控制,即只有在相同包结构的代码才可以访问此接口 接口不可以有构造方法(区别于类中的构造方法) 接口里面的所有成员,包括常量.方法等都是public访问权限,所以在

Java学习之面向对象五

###01final关键字概念 * A: 概述 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承, 或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后, 就可以对其中的方法进行重写,那怎么解决呢? 要解决上述的这些问题,需要使用到一个关键字final,final的意思为最终,不可变. final是个修饰符,它可以用来修饰类,类的成员,以及局部变量. ###02final修饰类义 * A: final 修饰类 final修饰类

Java学习-008-判断文件类型实例

此文源码主要为应用 Java 如何判断文件类型的源码及其测试源码.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:2015-2-2 23:02:00,请知悉. Java 判断文件类型源码如下所示: 1 /** 2 * @function 判断文件类型 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java assertFileType