美文网首页
16文件与流

16文件与流

作者: 蛋炒饭_By | 来源:发表于2018-01-11 08:49 被阅读35次

    <pre>

    什么是文件?

    文件可认为是相关记录或放在一起的数据的集合

    文件一般存储在哪里?

    image

    JAVA程序如何访问文件属性?

    java.io.File 类

    File类访问文件属性

    image

    JAVA中的文件及目录处理类

    在Java中提供了操作文件及目录(即我们所说的文件夹)类File。有以下几点注意事项:

    (1)不论是文件还是目录都使用File类操作;

    (2)File类只提供操作文件及目录的方法,并不能访问文件的内容,所以他描述的是文件本身的属性;

    (3)如果要访问文件本身,用到了我们下面要学习的IO流.

    一:构造方法

    File 文件名/目录名 = new File("文字路径字符串");

    在Java中提供了几种创建文件及目录的构造方法,但大体上都是用参数中的文字路径字符串来创建。

    二:一般方法

    (1)文件检测相关方法

    boolean isDirectory():判断File对象是不是目录

    boolean isFile():判断File对象是不是文件

    boolean exists():判断File对象对应的文件或目录是不是存在

    (2)文件操作的相关方法

    boolean createNewFile():路径名指定的文件不存在时,创建一个新的空文件

    boolean delete():删除File对象对应的文件或目录

    (3)目录操作的相关方法

    boolean mkdir():单层创建空文件夹

    boolean mkdirs():多层创建文件夹

    File[] listFiles():返回File对象表示的路径下的所有文件对象数组

    (4)访问文件相关方法

    String getName():获得文件或目录的名字

    String getAbsolutePath():获得文件目录的绝对路径

    String getParent():获得对象对应的目录的父级目录

    long lastModified():获得文件或目录的最后修改时间

    long length() :获得文件内容的长度

    目录的创建

    public class MyFile {
      public static void main(String[] args) {
          //创建一个目录
          File file1 = new File("d:\\test");
          //判断对象是不是目录
          System.out.println("是目录吗?"+file1.isDirectory());
          //判断对象是不是文件
          System.out.println("是文件吗?"+file1.isFile());
          //获得目录名
          System.out.println("名称:"+file1.getName());
          //获得相对路径
          System.out.println("相对路径:"+file1.getPath());
          //获得绝对路径
          System.out.println("绝对路径:"+file1.getAbsolutePath());
          //最后修改时间
          System.out.println("修改时间:"+file1.lastModified());
          //文件大小
          System.out.println("文件大小:"+file1.length());
      }
    }
    
    

    程序首次运行结果:

    是目录吗?false
    是文件吗?false
    名称:test
    相对路径:d:\test
    绝对路径:d:\test
    修改时间:0
    文件大小:0
    
    

    file1对象是目录啊,怎么在判断“是不是目录”时输出了false呢?这是因为只是创建了代表他是目录的对象,还没有真正的创建,这时候要用到mkdirs()方法,如下:

    public class MyFile {
        public static void main(String[] args) {
            //创建一个目录
            File file1 = new File("d:\\test\\test");
            file1.mkdirs();//创建了多级目录
            //判断对象是不是目录
            System.out.println("是目录吗?"+file1.isDirectory());     
        }
    }
    
    

    文件的创建

    public class MyFile {
        public static void main(String[] args) {
            //创建一个文件
            File file1 = new File("d:\\a.txt");
    
            //判断对象是不是文件
            System.out.println("是文件吗?"+file1.isFile());  
        }
    }
    
    

    首次运行结果:

    是文件吗?false
    
    

    同样会发现类似于上面的问题,这是因为只是代表了一个文件对象,并没有真正的创建,要用到createNewFile()方法,如下

    public class MyFile {
        public static void main(String[] args) {
            //创建一个文件对象
            File file1 = new File("d:\\a.txt");
            try {
                file1.createNewFile();//创建真正的文件
            } catch (IOException e) {
                e.printStackTrace();
            }
            //判断对象是不是文件
            System.out.println("是文件吗?"+file1.isFile());  
        }
    }
    
    

    文件夹与文件的创建目录

    文件时存放在文件夹下的,所以应该先创建文件夹,后创建文件,如下:

    public class MyFile {
        public static void main(String[] args) {
            //代表一个文件夹对象,单层的创建
            File f3 = new File("d:/test");
            File f4 = new File("d:/test/a.txt");
            f3.mkdir();//先创建文件夹,才能在文件夹下创建文件
            try {
                f4.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            //代表一个文件夹对象,多层的创建
            File f5= new File("d:/test/test/test");
            File f6 = new File("d:/test/test/test/a.txt");
            f5.mkdirs();//多层创建
            try {
                f6.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    

    运行结果为,在D磁盘的test文件夹下有一个a.txt,在D磁盘的test/test/test下有一个a.txt文件。

    编程:判断是不是有这个文件,若有则删除,没有则创建

    public class TestFileCreatAndDele {
        public static void main(String[] args) {
            File f1 = new File("d:/a.txt");
            if(f1.exists()){//文件在吗
                f1.delete();//在就删除
            }else{//不在
                try {
                    f1.createNewFile();//就重新创建
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
    

    文件的逐层读取

    File的listFiles()只能列出当前文件夹下的文件及目录,那么其子目录下的文件及目录该如何获取呢?解决的办法有很多,在这运用递归解决.

    //逐层获取文件及目录
    public class TestFindFile {
        public static void openAll(File f) {// 递归的实现
            File[] arr = f.listFiles();// 先列出当前文件夹下的文件及目录
            for (File ff : arr) {
                if (ff.isDirectory()) {// 列出的东西是目录吗
                    System.out.println(ff.getName());
                    openAll(ff);// 是就继续获得子文件夹,执行操作
                } else {
                    // 不是就把文件名输出
                    System.out.println(ff.getName());
                }
            }
        }
        public static void main(String[] args) {
            File file = new File("d:/test");// 创建目录对象
            openAll(file);// 打开目录下的所有文件及文件夹
        }
    }
    
    

    如何读写文件?

    通过流来读写文件

    流是指一连串流动的字符,是以先进先出方式发送信息的通道

    image

    输入/输出流与数据源

    image

    Java流的分类

    image

    小重点

    package com.company;
    
    import java.io.*;
    import java.util.Date;
    
    /**
     * Created by ttc on 2018/1/12.
     */
    public class FileDemo {
        public static void main(String[] args) throws IOException {
    
            File file = new File("d:/hello.txt");
            FileInputStream fileInputStream = new FileInputStream(file);
    
            //先读一个字节 
            int n = fileInputStream.read();
            byte[] buffer = new byte[2000];
            int index = 0;
            while (n != -1)
            {
                buffer[index] = (byte) n;
                index++;
                System.out.println(Integer.toHexString(n));
                n = fileInputStream.read();//尝试读下一个字节
            }
            System.out.println("读完了");
    
            String string = new String(buffer, 0, index);// String(byte[] buffer, int offset, int len);可以将字节数组转变成字符串
            System.out.println(string);
    
            //
    
    //        int n;
    //        int count = 0;
    //        while ((n=fileInputStream.read())!=-1)
    //        {
    //            System.out.println(Integer.toHexString(n));
    //            count++;
    //        }
    //
    //        System.out.println(count);
            fileInputStream.close();
        }
    }
    

    文本文件的读写

    • 用FileInputStream和FileOutputStream读写文本文件

    • 用BufferedReader和BufferedWriter读写文本文件

    二进制文件的读写

    • 使用DataInputStream和DataOutputStream读写二进制文件

    使用FileInputStream 读文本文件

    image

    InputStream类常用方法
    int read( )
    int read(byte[] b)
    int read(byte[] b,int off,int len)
    void close( )
    子类FileInputStream常用的构造方法
    FileInputStream(File file)
    FileInputStream(String name)

    一个一个字节的读

    public static void main(String[] args) throws IOException {
        // write your code here
            File file = new File("d:/我的青春谁做主.txt");
            FileInputStream fileInputStream = new FileInputStream(file);
    
            byte[] buffer = new byte[100];//保存从磁盘读到的字节
            int index = 0;
    
            int content = fileInputStream.read();//读文件中的一个字节
    
            while (content != -1)//文件中还有内容,没有读完
            {
                buffer[index] = (byte)content;
                index++;
    
                //读文件中的下一个字节
                content = fileInputStream.read();
            }
    
            //此时buffer数组中读到了文件的所有字节
    
            String string = new String(buffer,0, index);
    
            System.out.println(string);
        }
    

    一批一批的读

    public static void main(String[] args) throws IOException {
            // write your code here
    
            File file = new File("d:/我的青春谁做主.txt");
            FileInputStream fileInputStream = new FileInputStream(file);
    
            byte[] buffer = new byte[SIZE];//保存从磁盘读到的字节
    
    
            int len = fileInputStream.read(buffer);//第一次读文件中的100个字节
            while (len != -1)
            {
                String string = new String(buffer,0, len);
                System.out.println(string);
                //读下一批字节
                len = fileInputStream.read(buffer);
            }
        }
    
    import java.io.File;  
    import java.io.FileInputStream;  
    import java.io.FileNotFoundException;  
    import java.io.IOException;  
    import java.util.Arrays;  
    
    public class FileInputStreamDemo1 {  
    
        private static final int SIZE = 4096;  
    
        public static void main(String[] args) throws IOException {  
    
            /* 
             * 将已有文件的数据读取出来 
             * 既然是读,使用InputStream 
             * 而且是要操作文件。FileInputStream 
             *  
             */  
    
            //为了确保文件一定在之前是存在的,将字符串路径封装成File对象  
            File file = new File("tempfile\\fos.txt");  
            if(!file.exists()){  
                throw new RuntimeException("要读取的文件不存在");  
            }  
    
            //创建文件字节读取流对象时,必须明确与之关联的数据源。  
            FileInputStream fis = new FileInputStream(file);  
    
            //调用读取流对象的读取方法  
            //1.read()返回的是读取到的字节  
            //2.read(byte[] b)返回的是读取到的字节个数  
    
            //1\.   
    //      int by=0;  
    //      while((by=fis.read())!=-1){  
    //          System.out.println(by);  
    //      }  
    
            //2\.  
    //      byte[] buf = new byte[3];  
    //      int len = fis.read(buf);//len记录的是往字节数组里存储的字节个数  
    
    //      System.out.println(len+"...."+new String(buf,0,len));//转成字符串  
    //        
    //      int len1 = fis.read(buf);  
    //      System.out.println(len1+"...."+new String(buf,0,len1));  
    
            //创建一个字节数组,定义len记录长度  
            int len = 0;  
            byte[] buf = new byte[SIZE];  
            while((len=fis.read(buf))!=-1){  
                System.out.println(new String(buf,0,len));  
            }  
    
            //关资源  
            fis.close();  
        }  
    
    }  
    
    

    使用FileOutputStream 写文本文件

    image
    public class FileOutputStreamTest {
    
        public static void main(String[] args) {
            FileOutputStream fos=null;
             try {
                 String str ="好好学习Java";
                 byte[] words  = str.getBytes();
                 fos = new FileOutputStream("D:\\myDoc\\hello.txt");
                 fos.write(words, 0, words.length);
                 System.out.println("hello文件已更新!");
              }catch (IOException obj) {
                  System.out.println("创建文件时出错!");
              }finally{
                  try{
                      if(fos!=null)
                          fos.close();
                  }catch (IOException e) {
                     e.printStackTrace();
                  }
              }
        }
    }
    
    

    OutputStream类常用方法
    void write(int c)
    void write(byte[] buf)
    void write(byte[] b,int off,int len)
    void close( )
    子类FileOutputStream常用的构造方法
    FileOutputStream (File file)
    FileOutputStream(String name)
    FileOutputStream(String name,boolean append)

    1、前两种构造方法在向文件写数据时将覆盖文件中原有的内容

    2、创建FileOutputStream实例时,如果相应的文件并不存在,则会自动创建一个空的文件

    复制文件内容

    文件“我的青春谁做主.txt”位于D盘根目录下,要求将此文件的内容复制到

    C:\myFile\my Prime.txt中

    实现思路

    1. 创建文件“D:\我的青春谁做主.txt”并自行输入内容
    2. 创建C:\myFile的目录。
    3. 创建输入流FileInputStream对象,负责对D:\我的青春谁做主.txt文件的读取。
    4. 创建输出流FileOutputStream对象,负责将文件内容写入到C:\myFile\my Prime.txt中。
    5. 创建中转站数组words,存放每次读取的内容。
    6. 通过循环实现文件读写。
    7. 关闭输入流、输出流
      l老师带着做
    public static void main(String[] args) throws IOException {
            //创建E:\myFile的目录。
    
            File folder = new File("E:\\myFile");
            if (!folder.exists())//判断目录是否存在
            {
                folder.mkdirs();//如果不存在,创建该目录
            }
    
            //创建输入流
            File fileInput = new File("d:/b.rar");
            FileInputStream fileInputStream = new FileInputStream(fileInput);
            //创建输出流
            FileOutputStream fileOutputStream = new FileOutputStream("E:\\myFile\\c.rar");
            //创建中转站数组buffer,存放每次读取的内容
            byte[] buffer = new byte[1000];
    
            //从fileInputStream(d:/我的青春谁做主.txt)中读100个字节到buffer中
            int length = fileInputStream.read(buffer);
    
            int count = 0;
            while (length != -1) //这次读到了至少一个字节
            {
                System.out.println(length);
                //将buffer中内容写入到输出流(E:\myFile\myPrime.txt)
                fileOutputStream.write(buffer,0,length);
    
                //继续从输入流中读取下一批字节
                length = fileInputStream.read(buffer);
                count++;
            }
            System.out.println(count);
    
            fileInputStream.close();
            fileOutputStream.close();
        }
    
    public class InputAndOutputFile {
        public static void main(String[] args) {
            FileInputStream fis=null;
            FileOutputStream fos=null;
            try {
                //1、创建输入流对,负责读取D:/ 我的青春谁做主.txt文件
                fis = new FileInputStream("D:/我的青春谁做主.txt");
                //2、创建输出流对象
                fos = new FileOutputStream("C:/myFile/myPrime.txt",true);
                //3、创建中转站数组,存放每次读取的内容
                byte[] words=new byte[1024];
                //4、通过循环实现文件读取
                while((fis.read())!=-1){
                    fis.read(words);
                    fos.write(words, 0, words.length);
                }
                System.out.println("复制完成,请查看文件!");      
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }finally{
                //5、关闭流
                try {
                    if(fos!=null
                        fos.close();
                    if(fis!=null)
                        fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
    
            }
        }
    }
    

    使用字符流读写文件

    使用FileReader读取文件

    老师带着做

    public static void main(String[] args) throws IOException {
            //
            FileReader fileReader = new FileReader("D:/我的青春谁做主.txt");
    
            char[] array = new char[100];
            int length = fileReader.read(array);
            StringBuilder sb = new StringBuilder();
            while (length != -1)
            {
                sb.append(array);
                length = fileReader.read(array);
            }
    
            System.out.println(sb.toString());
            fileReader.close();
    
        }
    
    public class FileReaderTest {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            //创建 FileReader对象对象.
            Reader fr=null;
            StringBuffer sbf=null;
            try {
                fr = new FileReader("D:\\myDoc\\简介.txt");
                char ch[]=new char[1024];  //创建字符数组作为中转站
                sbf=new StringBuffer();
                int length=fr.read(ch);  //将字符读入数组
                //循环读取并追加字符
                while ((length!= -1)) { 
                    sbf.append(ch);   //追加到字符串
                    length=fr.read();
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally{
                try {
                    if(fr!=null)
                        fr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            System.out.println(sbf.toString());
        }
    
    }
    
    

    BufferedReader类

    如何提高字符流读取文本文件的效率?

    使用FileReader类与BufferedReader类

    BufferedReader类是Reader类的子类

    BufferedReader类带有缓冲区

    按行读取内容的readLine()方法

    image
    public static void main(String[] args) throws IOException {
            FileReader fileReader = new FileReader("D:/我的青春谁做主.txt");
    
            BufferedReader bufferedReader = new BufferedReader(fileReader);
    
            String strContent = bufferedReader.readLine();
            StringBuilder sb = new StringBuilder();
            while (strContent != null)
            {
                sb.append(strContent);
                sb.append("\n");
                sb.append("\r");
                strContent = bufferedReader.readLine();
            }
    
            System.out.println(sb.toString());
            fileReader.close();
            bufferedReader.close();
        }
    
    public class BufferedReaderTest {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            FileReader fr=null;
            BufferedReader br=null;
            try {
                //创建一个FileReader对象
                fr=new FileReader("D:\\myDoc\\hello.txt"); 
                //创建一个BufferedReader 对象
                br=new BufferedReader(fr); 
                //读取一行数据 
                String line=br.readLine();
                while(line!=null){ 
                    System.out.println(line);
                    line=br.readLine(); 
                }
            }catch(IOException e){
                    System.out.println("文件不存在!");
            }finally{
                 try {
                     //关闭 流
                    if(br!=null)
                        br.close();
                    if(fr!=null)
                        fr.close(); 
                 } catch (IOException e) {
                    e.printStackTrace();
                 }
            }
        }
    }
    
    

    使用FileWriter写文件

    public class WriterFiletTest {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            Writer fw=null;
            try {
                  //创建一个FileWriter对象
                  fw=new FileWriter("D:\\myDoc\\简介.txt"); 
                  //写入信息
                  fw.write("我热爱我的团队!");            
                  fw.flush();  //刷新缓冲区
    
            }catch(IOException e){
                  System.out.println("文件不存在!");
            }finally{
                try {
                    if(fw!=null)
                        fw.close();  //关闭流
                 } catch (IOException e) {
                    e.printStackTrace();
                 }
            }
        }
    
    }
    
    

    如何提高字符流写文本文件的效率?

    使用FileWriter类与BufferedWriter类

    BufferedWriter类是Writer类的子类

    BufferedWriter类带有缓冲区

    image
    public class BufferedWriterTest {
        public static void main(String[] args) {
            FileWriter fw=null;
            BufferedWriter bw=null;
            FileReader fr=null;
            BufferedReader br=null;
            try {
               //创建一个FileWriter 对象
               fw=new FileWriter("D:\\myDoc\\hello.txt"); 
               //创建一个BufferedWriter 对象
               bw=new BufferedWriter(fw); 
               bw.write("大家好!"); 
               bw.write("我正在学习BufferedWriter。"); 
               bw.newLine(); 
               bw.write("请多多指教!"); 
               bw.newLine();               
               bw.flush();
    
               //读取文件内容
                fr=new FileReader("D:\\myDoc\\hello.txt"); 
                br=new BufferedReader(fr); 
                String line=br.readLine();
                while(line!=null){ 
                    System.out.println(line);
                    line=br.readLine(); 
                }
    
                fr.close(); 
               }catch(IOException e){
                    System.out.println("文件不存在!");
               }finally{
                   try{
                       if(fw!=null)
                           fw.close();
                       if(br!=null)
                           br.close();
                       if(fr!=null)
                           fr.close();  
                   }catch(IOException ex){
                        ex.printStackTrace();
                   }
               }
        }
    }
    
    

    练习

    格式模版保存在文本文件pet.template中,内容如下:

    您好!

    我的名字是{name},我是一只{type}。

    我的主人是{master}。

    其中{name}、{type}、{master}是需要替换的内容,现在要求按照模板格式保存宠物数据到文本文件,即把{name}、{type}、{master}替换为具体的宠物信息,该如何实现呢?

    实现思路

    1.创建字符输入流BufferedReader对象

    2.创建字符输出流BufferedWriter对象

    1. 建StringBuffer对象sbf,用来临时存储读取的

      数据

    2. 通过循环实现文件读取,并追加到sbf中

    3. 使用replace()方法替换sbf中的内容

    4. 将替换后的内容写入到文件中

    5. 关闭输入流、输出流

    public class ReaderAndWriterFile {
    
         public void replaceFile(String file1,String file2) {   
               BufferedReader reader = null;
               BufferedWriter writer = null;
             try {
                //创建 FileReader对象和FileWriter对象.
                FileReader fr  = new FileReader(file1);  
                FileWriter fw = new FileWriter(file2);
                //创建 输入、输入出流对象.
                reader = new BufferedReader(fr);
                writer = new BufferedWriter(fw);
                String line = null;
                StringBuffer sbf=new StringBuffer();  
                //循环读取并追加字符
                while ((line = reader.readLine()) != null) {
                    sbf.append(line);  
                }
                System.out.println("替换前:"+sbf);
                /*替换内容*/
                String newString=sbf.toString().replace("{name}", "欧欧");
                newString = newString.replace("{type}", "狗狗");
                newString = newString.replace("{master}", "李伟");
                System.out.println("替换后:"+newString);
                writer.write(newString);  //写入文件       
            } catch (IOException e) {
                e.printStackTrace();
            }finally{
                //关闭 reader 和 writer.
                try {
                    if(reader!=null)
                        reader.close();
                    if(writer!=null)
                        writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        public static void main(String[] args) {
            ReaderAndWriterFile obj = new ReaderAndWriterFile();
            obj.replaceFile("c:\\pet.template", "D:\\myDoc\\pet.txt");          
        }
    }
    
    

    使用字符流读写文本更合适

    使用字节流读写字节文件(音频,视频,图片,压缩文件等)更合适,文本文件也可以看成是有字节组成

    图片拷贝

    public class move {  
        public static void main(String[] args)  
        {  
            String src="E:/DesktopFile/Android/CSDN.jpg";  
            String target="E:/DesktopFile/Android/test/CSDN.jpg";  
            copyFile(src,target);  
        }  
        public static void copyFile(String src,String target)  
            {     
                File srcFile = new File(src);    
                   File targetFile = new File(target);    
                   try {    
                       InputStream in = new FileInputStream(srcFile);     
                       OutputStream out = new FileOutputStream(targetFile);    
                       byte[] bytes = new byte[1024];    
                       int len = -1;    
                       while((len=in.read(bytes))!=-1)  
                       {    
                           out.write(bytes, 0, len);    
                       }    
                       in.close();    
                       out.close();    
                   } catch (FileNotFoundException e) {    
                       e.printStackTrace();    
                   } catch (IOException e) {    
                       e.printStackTrace();    
                   }    
                   System.out.println("文件复制成功");   
    
            }  
    
        }  
    

    --------------------------------------------------------------------------

    最后一道题

    创建一个txt文件夹email.txt文件
    亲爱的{to}
    {content}
    yours{from}
    

    第一个类

    package com.company;
    
    import java.io.*;
    
    /**
     * Created by ttc on 2018/1/15.
     */
    public class TemplateReplace {
        public static void main(String[] args) throws IOException {
            //读取模板内容
            FileReader fileReader = new FileReader("e:/email.txt");
            BufferedReader bufferedReader = new BufferedReader(fileReader);
    
            String strLine = bufferedReader.readLine();
    
            StringBuilder stringBuilder = new StringBuilder();
            while (strLine != null)
            {
                stringBuilder.append(strLine);
                strLine = bufferedReader.readLine();
            }
    
    //        System.out.println(stringBuilder.toString());
    
            Email email = new Email();
            email.setTo("宝贝");
            email.setContent("新年快乐");
            email.setFrom("大甜甜");
    
            String strContent = stringBuilder.toString();//亲爱的{to}  {content}       yours {from}
            strContent = strContent.replace("{to}",email.getTo());
            strContent = strContent.replace("{content}",email.getContent());
            strContent = strContent.replace("{from}",email.getFrom());
    //        System.out.println(strContent);
    
            FileWriter fileWriter = new FileWriter("e:/my_email.txt");//文件夹在那个位置,代码生成文件
            BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
    
            bufferedWriter.write(strContent);
            bufferedWriter.flush();
    
            fileReader.close();
            bufferedReader.close();
            fileWriter.close();
            bufferedWriter.close();
    
        }
    }
    

    第二个类

    package com.company;
    
    /**
     * Created by ttc on 18-1-15.
     */
    public class Email {
        private String to;
        private String content;
        private String from;
    
        public String getTo() {
            return to;
        }
    
        public void setTo(String to) {
            this.to = to;
        }
    
        public String getContent() {
            return content;
        }
    
        public void setContent(String content) {
            this.content = content;
        }
    
        public String getFrom() {
            return from;
        }
    
        public void setFrom(String from) {
            this.from = from;
        }
    }
    

    相关文章

      网友评论

          本文标题:16文件与流

          本文链接:https://www.haomeiwen.com/subject/dehanxtx.html