• Java学习笔记——File类之文件管理和读写操作、下载图片


     

    Java学习笔记——File类之文件管理和读写操作、下载图片

    File类的总结:

    1.文件和文件夹的创建

    2.文件的读取

    3.文件的写入

    4.文件的复制(字符流、字节流、处理流)

    5.以图片地址下载图片

    文件和文件夹

    相关函数

     (boolean) mkdir() 创建此抽象路径名指定的目录
     (boolean) mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
     (boolean) delete() 删除此抽象路径名表示的文件或目录
     (boolean) createNewFile() 当不存在此路径名指定名称的文件时,创建一个新的空文件。
     

    创建文件

    public static void NewFile(String pathString) {
        File file = new File(pathString);
        if (!file.exists()) {
          try {
            if (file.createNewFile()) {
              System.out.println("文件创建成功");
            }
          } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
          }
        } else {
          System.out.println("文件已存在");
        }
      }

    创建文件夹

    public static void NewFileBox(String pathString) {
        File file2 = new File(pathString);
        if (!file2.exists()) {
          if (file2.mkdirs()) {
            System.out.println("文件夹成功");
          }
        } else {
          System.out.println("文件夹存在");
          file2.delete();//销毁文件
        }
      }

    应用:

    public static void main(String[] args) {
        NewFile("test/file.txt");
        NewFileBox("test/a/a/a/a");
      }

    Writer写入文件

    用FileWriter写入文件

    public  static void ForFileWriter(String string,String fileName) {
        File file = new File(fileName);
        try {
          FileWriter fWriter = new FileWriter(file);
          fWriter.write(string);
          fWriter.close();
        } catch (Exception e) {
          // TODO: handle exception
          e.printStackTrace();
        }
      }

    用BufferedWriter写入文件

    public static void ForBufferedWriter(String string,String desFile) {
        BufferedWriter bWriter = null;
        try {
          bWriter = new BufferedWriter(new FileWriter(new File(desFile)));
          bWriter.write(string.toString());
          bWriter.close();
        } catch (Exception e) {
          e.printStackTrace();
        }
      }

    应用:

    public static void main(String[] args) {
        ForFileWriter("用FileWriter写入文件", "test/writer1.txt");
        ForBufferedWriter("用BufferedWriter写入文件", "test/writer2.txt");
      }

    Reader读取文件

    用FileReader读取文件

    public static void testReadByReader(String fileName){
        File file = new File(fileName);
        FileReader fis = null;
        try {
          fis =  new FileReader(file);
          char[] arr = new char[1024 * 1000 * 6];
          int len = fis.read(arr);
          String data = new String(arr, 0, len);
          fis.close();
          System.out.println(fileName+"中按FileReader读取的文件内容是:
    "+data);
        } catch (Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }

    用FileInputStream读取文件

    public static void testReadByInputStream(String fileName){
        File file = new File(fileName);
        FileInputStream fis = null;
        try {
          fis =  new FileInputStream(file);
          byte[] arr = new byte[1024 * 1000 * 6];
          int len = fis.read(arr);
          String data = new String(arr, 0, len);
          fis.close();
          System.out.println(fileName+"中按FileInputStream读取的文件内容是:
    "+data);
        } catch (Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }

    用BufferedReader读取文件

    public static void testReadByBufferedReader(String fileName) {
        BufferedReader bReader = null;
        String line = null;
        StringBuffer buffer = new StringBuffer();
        try {
          bReader =new BufferedReader(new FileReader(new File(fileName)));
          while ((line = bReader.readLine())!=null) {
            buffer.append(line).append("
    ");
          }
        } catch (Exception e) {
          // TODO: handle exception
          e.printStackTrace();
        }
        System.out.println(fileName+"中按BufferedReader读取的文件内容是:
    "+buffer.toString());
      }

    应用:
    public static void main(String[] args) {
        testReadByInputStream("res/我.txt");
        testReadByReader("res/我.txt");
        testReadByBufferedReader("res/我.txt");
      }

    文件的复制操作

    字符流复制

    public static void FileCopy1(String readfile,String writeFile) {
        try {
          FileReader input = new FileReader(readfile);
          FileWriter output = new FileWriter(writeFile);
          int read = input.read();		
          while ( read != -1 ) {
            output.write(read);	
            read = input.read();
          }			
          input.close();
          output.close();
        } catch (IOException e) {
          System.out.println(e);
        }
      }

    字节流复制

    public static void FileCopy2(String readfile,String writeFile) {
        try {
          FileInputStream input = new FileInputStream(readfile);
          FileOutputStream output = new FileOutputStream(writeFile);
          int read = input.read();		
          while ( read != -1 ) {
            output.write(read);	
            read = input.read();
          }			
          input.close();
          output.close();
        } catch (IOException e) {
          System.out.println(e);
        }
      }

    处理流复制

    public static void FileCopy3(String readfile,String writeFile) {
        BufferedReader bReader = null;
        BufferedWriter bWriter = null;
        String line = null; 
        try {
          bReader = new BufferedReader(new FileReader(new File(readfile)));
          bWriter = new BufferedWriter(new FileWriter(new File(writeFile)));
          while ((line = bReader.readLine())!=null) {
            bWriter.write(line);
            bWriter.newLine();
          }
          bWriter.close();
          bReader.close();
        } catch (Exception e) {
          // TODO: handle exception
          e.printStackTrace();
        }
      }

    应用:

    public static void main(String[] args) {
        FileCopy1("res/我.txt", "test/1.txt");
        FileCopy2("res/我.txt", "test/2.txt");
        FileCopy3("res/我.txt", "test/3.txt");
        FileCopy2("res/me.jpg", "test/33.jpg");
      }

    以图片地址下载图片

    读取给定图片文件的内容,用FileInputStream

    public static byte[] mReaderPicture(String filePath) {
        byte[] arr = null;
        try {
          File file = new File(filePath);
          FileInputStream fReader = new FileInputStream(file);
          arr = new byte[1024*100];
          fReader.read(arr);
        } catch (Exception  e) {
          // TODO: handle exception
          e.printStackTrace();
        }
        return arr;
      }

    根据byte数组,创建一张新图。

    public static void mWriterPicture(String newFileName,byte[] b){
        try {
          File file = new File(newFileName);
          FileOutputStream fStream = new FileOutputStream(file);
          fStream.write(b);
          fStream.close();
          System.out.println("图片创建成功    "+b.length);
        } catch (Exception e) {
          // TODO: handle exception
        }
      }

    获取指定网址的图片,返回其byte[]

    public static byte[] mReaderPictureToInternet(String strUr1){
        byte[] imgData = null;
        URL url;
        try {
          url = new URL(strUr1);
          URLConnection connection = url.openConnection();
          int length = (int)connection.getContentLength();
          InputStream is = connection.getInputStream();
          if (length!=-1) {
            imgData = new byte[length];
            byte[] temp = new byte[500*1024];
            int readLen = 0;
            int destPos = 0;
            while ((readLen = is.read(temp))>0) {
              System.arraycopy(temp, 0, imgData, destPos, readLen);
              //arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 
              //从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束
              destPos+=readLen;
            }
          }
          return imgData;
        } catch (Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
        return imgData;
      }

    直接获取指定网址的图片

    public static void DownPictureToInternet(String filePath,String strUr1){
        try {
          URL url = new URL(strUr1);
          InputStream fStream = url.openConnection().getInputStream();
          int b = 0;
          FileOutputStream fos = new FileOutputStream(new File(filePath));
          while ((b=fStream.read())!=-1) {
            fos.write(b);
          }
          fStream.close();
          fos.close();
        } catch (Exception e) {
          e.printStackTrace();
        }
      }

    应用:

    public static void main(String[] args) {
        mWriterPicture("test/1.jpg", mReaderPicture("res/me.jpg"));
        mWriterPicture("test/2.jpg", mReaderPictureToInternet(
            "http://pic2.desk.chinaz.com/file/201209/7/qinghimingyue4_p.jpg"));
        DownPictureToInternet("test/下载.jpg",
          "http://img3.100bt.com/upload/ttq/20130205/1360069663700.jpg");
      }










     

     

     

  • 相关阅读:
    C++访问WebService gSoap方式
    vc6
    POS 60域用法
    本次操作由于这台计算机的限制而被取消
    POS的一点杂笔
    QT5.5
    注册表常用快捷键
    WebBrowser与IE的关系,如何设置WebBrowser工作在IE9模式下?
    js中的prototype属性
    WPF入门教程系列二十——ListView示例(二)
  • 原文地址:https://www.cnblogs.com/timssd/p/4790446.html
Copyright © 2020-2023  润新知