课后练习

  1. 从键盘输入一个文件名,在 D:盘查找这个文件,如果找到就输出这个文件的绝对路径,如果找不到则输出找不到这个文件。

    //笔记:相对完善的查找文件的方法
    //分析:一个盘中相同文件名的文件可能存在多个路径下
        /**
         * 在指定的文件查找指定名字的文件
         * @param dirFile 指定在哪查找的文件夹(或文件)
         * @param filename 指定要查找的文件名(或文件夹名)
         * @return 返回相同文件名的所有绝对路径的集合
         */
        public static ArrayList<String> findFilesPath(File dirFile, String filename) {
            if (dirFile == null || !dirFile.exists() || filename == null || filename.length()==0) {
                return null;
            }
            ArrayList<String> findFilesPath = new ArrayList<>();
            String dirFileName = dirFile.getName();
            boolean equals = dirFileName.equals(filename);
            if (equals) {
                findFilesPath.add(dirFile.getAbsolutePath());
            }
            File[] list = dirFile.listFiles();
            if (!equals && list.length == 0) {
                return null;
            }
            for (File f : list) {
                if (f.isFile()) {
                    if (f.getName().equals(filename)) {
                        findFilesPath.add(f.getAbsolutePath());
                    }
                } else {
                    ArrayList<String> returnList = findFilesPath(f, filename);
                    if(returnList!=null){
                        findFilesPath.addAll(returnList);
                    }
                }
            }
            if(findFilesPath.size()==0){
                return null;
            }
            return findFilesPath;
        }
    

编写程序来实现如下功能

    1. 在D盘下创建一个目录Letter

    2. 在控制台显示下列选项:1 查看请假条 2 撰写请假条

      1. 如果用户选择2,则提示用户撰写请假条,并把撰写的内容保存位文件,存入到Letter文件夹下。

        • 格式如下:

          • 请假人:王宝强

          • 请假日期:2016年8月15日

          • 请假原因:向法院起诉马蓉离婚.....先请假一天等等

      2. 如果用户选择1,则在控制台输出请假条的内容。

  1. 将JAVA LOGO 图片 通过鼠标右键保存到 D盘(D:\logo.png)中,然后使用java程序 实现:

    1. 剪切该图片到E盘(E:\logo.png)中。

    2. 再从E盘把该图片的 "一半" 复制一份到D盘中。

  2. 在D盘指定一个文件夹(要求文件下面有子文件夹和文件(图片,文档等),子文件夹里面也放一些文件夹和文件,以此类推,可以多放几层)。然后,复制该文件夹下所有文件和文件夹到 E盘指定目录下 。

     import java.io.File;
      import java.io.FileInputStream;
      import java.io.FileNotFoundException;
      import java.io.FileOutputStream;
      import java.io.IOException;

      public class CopyFile {

          public static void main(String[] args) {
              File source = new File("a");
              File target = new File("H");

              boolean copyFiles = copyFiles(source, target);
              System.out.println(copyFiles);
          }

          /**
    * 文件的拷贝
     * @param source  要拷贝的文件
     * @param target  要拷贝文件到哪的路径
     * @return  拷贝成功返回true
     */
    public static boolean copyFiles(File source, File target) {
        if (source == null || target == null || !source.exists() || target.isFile()) {
            return false;
        }
        if (!target.exists()) {
            target.mkdirs();
        }

        File newTarget = new File(target, source.getName());
        newTarget.mkdirs();

        File[] list = source.listFiles();

        for (File f : list) {
            if (f.isFile()) {
                File file = new File(newTarget, f.getName());
                // 文件在写入的时候不存在则会自动创建
                // if (!file.exists()) {
                // try {
                // file.createNewFile();
                // } catch (IOException e) {
                // e.printStackTrace();
                // }
                // }
                try (FileInputStream fis = new FileInputStream(f); FileOutputStream fos = new FileOutputStream(file);) {
                    byte[] bs = new byte[1024];
                    int read = -1;
                    while ((read = fis.read(bs)) != -1) {
                        fos.write(bs, 0, read);
                    }
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            } else {
                copyFiles(f, newTarget);
            }
        }
        return true;
    }
}

=========================================================

课后练习

  1. 使用字符流读取一个字符文件,并把其中的所有小写字母变成大写字母,然后写入到另外一个文件中。

  2. (使用字符流实现)编写程序来实现如下功能

    1. 在D盘下创建一个目录Letter

    2. 在控制台显示下列选项:1 查看请假条 2 撰写请假条

      1. 如果用户选择2,则提示用户撰写请假条,并把撰写的内容保存位文件,存入到Letter文件夹下。

        • 格式如下:

          • 请假人:王宝强

          • 请假日期:2016年8月15日

          • 请假原因:向法院起诉马蓉离婚.....先请假一天等等

      2. 如果用户选择1,则在控制台输出请假条的内容。

  3. 假设一个文件中有如下内容,请把这些内容读入内存,并存入List<WorldCup>集合中。 举办时间、举办国、夺冠国

    ```

```

  1. 写一个程序,记录程序在运行时出现过的错误,保存成错误日志!。如:

    • 在输入Int类型的时候输错,把这个记录写入到文件中。

    • 在String 类型 转换 int类型的时候如果出错,把错误的记录写入到文件中。

    • 格式如下:

      err:2017年3月30日 15:26:33 字符串转换Int失败 不能把 abc 转成 int 类型。

      err:2017年3月30日 15:27:12 Scanner输入类型错误,要求输入int,却输入了"xyz"。

    提示:捕获程序有可能出现错误的地方,在catch语句中 将错误的信息 用自己的语言组织,写入到File中。

================================================

课后练习

  1. 将D盘的一张图片存入内存中,然后再把内存中的图片数据 存入到E盘中。

  2. 在D盘新建一个 十年.txt 文件,并把《十年》的歌词存入该文件中。然后编写一个程序,结合学过的IO流知识将文件的内容读入到程序中,并使用打印流讲《十年》的歌词打印到控制台!

  3. 编写一个程序,使用 RandomAccessFile 将一段文字写入到一个名为text.dat的文件中,然后使用RandomAccessFile对象将写入的文字读出来并打印到屏幕上。

  4. 把一个mp3文件截取为3个文件。

  5. 利用 ObjectOutputStream 存入两个Worker 对象, 然后使用 ObjectInputStream读出这两个对象,并打印这两个对象的信息。

有Worker 对象,
部分代码如下:
class Worker{
    private String name;
    private int age
    private double salary;
    //构造方法
    …
    //get/set 方法
    …
    //toString 方法
    …
}

results matching ""

    No results matching ""