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读取的文件内容是:\n"+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读取的文件内容是:\n"+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("\n");
      }
    } catch (Exception e) {
      // TODO: handle exception
      e.printStackTrace();
    }
    System.out.println(fileName+"中按BufferedReader读取的文件内容是:\n"+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");
  }

Java学习笔记——File类之文件管理和读写操作、下载图片的更多相关文章

  1. Java学习笔记——File类文件管理及IO读写、复制操作

    File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图片 文件和文件夹 相关函数  (boolean) mkdir( ...

  2. Java学习笔记-File类的基本方法

    要渐渐养成写博客的习惯-----> 前段时间看Mars的java中的I/O流没怎么懂,发现I/O流好难啊.今天重新看一遍其他教学,还有书籍,做些笔记,记录下每天的学习生活. File类的一些方法 ...

  3. java学习一目了然——File类文件处理

    java学习一目了然--File类文件处理 File类(java.io.File) 构造函数: File(String path) File(String parent,String child) F ...

  4. Java学习笔记之---类和对象

    Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态  例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...

  5. Java学习:File类

    Java学习:File类 File类的概述 重点:记住这三个单词 绝对路径和相对路径 File类的构造方法 File类判断功能的方法 File类创建删除功能的方法 File类获取(文件夹)目录和文件夹 ...

  6. Java学习笔记:基本输入、输出数据操作实例分析

    Java学习笔记:基本输入.输出数据操作.分享给大家供大家参考,具体如下: 相关内容: 输出数据: print println printf 输入数据: Scanner 输出数据: JAVA中在屏幕中 ...

  7. Java学习之File类理解

    File类是io包中唯一代表磁盘文件本身的对象.File类定义了一些与平台无关的方法来操作文件,可以通过调用File类中的方法,实现创建.删除.重命名文件等.File类的对象主要用来获取文件本身的一些 ...

  8. Java学习:File类中的过滤器接口

    javaIO类的File类应用:过滤器接口 FilenameFilter和FileFilter都是用来过滤文件的 例如: 过滤以.jpg或者.java结尾的文件. 通过看他们的源码: 通过使用File ...

  9. Java学习笔记——SequenceInputStream类合并文件的综合举例分析

    SequenceInputStream 介绍 SequenceInputStream 类表示其他输入流的逻辑串联,即文件的合并. 它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾, ...

随机推荐

  1. linux 解决Ubuntu编译内核uImage出现问题“mkimage” command not found - U-Boot images will not be built问题

    解决Ubuntu编译内核uImage出现问题“mkimage” command not found - U-Boot images will not be built问题 http://www.lin ...

  2. 六大设计原则——单一职责原则【Single Responsibility Principle】

    声明:本文内容是从网络书籍整理而来,并非原创. 用户管理的例子 先看一张用户管理的类图:  再看一眼上面的图,思考:这样合理吗? 这个接口是一个很糟糕的设计! 用户的属性和行为竟然混合在一起!!! 正 ...

  3. eclipse中使用maven插件的时候,运行run as maven build的时候报错

    -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable a ...

  4. perl 调用方法 子例程说明

    Perl does not provide any special syntax for class definitions Perl 不提供任何特殊的语法对于类的定义 A package is si ...

  5. [置顶] Guava学习之Lists

    Lists类主要提供了对List类的子类构造以及操作的静态方法.在Lists类中支持构造ArrayList.LinkedList以及newCopyOnWriteArrayList对象的方法.其中提供了 ...

  6. Spring 从零開始-05

    最终能到Spring的AOP编程了,AOP的概念特别的多.所以须要你在開始之前有点了解,然后通过代码慢慢学习! - 切面(Aspect):一个关注点的模块化,这个关注点实现可能另外横切多个对象.事务管 ...

  7. 立波 iphone3gs越狱教程:成功把iphone3gs手机升级成ios6.1.3系统,完美越狱,解决no service和耗电量大的问题

    前几天,老婆使用的iphone3gs摔地了,把手机里的连接电源的那个神马线给搞坏了,结果花了200多块大洋修好了: 修好后,老婆抱怨道:5年了,这手机好多软件都装不上,说手机版本号太低了, 我就说凑合 ...

  8. Single Image Haze Removal Using Dark Channel Prior翻译

    这段时间在回顾以前做的去雾,顺便就把这篇文章翻译了一下,看看有没有同行交流.由于是用LaTex排版的,所以只能转为图片传上来了.另外,英语水平有限,大部分都是靠词典,所以只能勉强着看了.

  9. Java面试题精选(一)基础概念和面向对象

    --   基础概念和面向对象   --      全程将为大家剖析几大部分内容,由于学习经验有限,望大家谅解并接受宝贵的意见: 基础概念部分     ★★   : 常出现的高频率单词的区别理解(异常. ...

  10. 六款常用的linux C/C++ IDE

    摘要: 一.AnjutaAnjuta是一个多语言的IDE,它最大的特色是灵活,同时打开多个文件,内嵌代码级的调试器(调用gdb),应用程序向导(Application wizards)可以方便的帮助你 ...