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. Java中抽象类和接口区别

    在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和int ...

  2. 华为OJ:计算两个自然时间相加

    按要求一步步做就好 import java.util.Scanner; public class dateAdd { public static void main(String args[]){ S ...

  3. Swift - 纯代码实现页面segue跳转,以及参数传递

    下面通过一个例子说明如何在代码中进行segue页面的切换,以及参数的传递.   样例功能如下: 1,主界面中是一个列表(这个列表是在代码中实现) 2,点击列表项时,界面会切换到详情页面,同时传递改列表 ...

  4. zepto.js介绍(持续更新)

    前言: zepto是一个简化版的jQuery,主要针对移动端开发. 简化了jQuery里很多的浏览器兼容性代码,jQuery的很多方法都被拿掉了(eg:slideUp). WP设备兼容性很差. 官方链 ...

  5. Ch02 从零开始实例学习4

    演练2-4  添加视图 原文链接:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-vi ...

  6. 动态绑定Gridview带模板列

    公司要做一个可以支持4种数据库(<!--数据库类型 (DLL专用) (SQL SERVER) (ORACLE) (ACCESS)(POSTGRE SQL)-->)的并且字段随表字段变化的可 ...

  7. PEM文件格式具体解析

    PEM文件格式存档 Author:Roson sun sunxiao@tomonline-inc.com Time:2006-4-11 1.  描写叙述: Openssl使用PEM(RFC 1421- ...

  8. hdu 4687 Boke and Tsukkomi

    Dancing link twice. Find the maximum combination numbers in the first time. Enumerate each node, dan ...

  9. NYOJ 1085 数单词 (AC自己主动机模板题)

    数单词 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 为了可以顺利通过英语四六级考试,如今大家每天早上都会早起读英语. LYH本来以为自己在6月份的考试中能够通过六 ...

  10. Swift - 环形进度条(UIActivityIndicatorView)的用法

    Swift中,除了条形进度条外,还有环形进度条,效果图如下: 1,环形进度条的基本属性 (1)Style: Large White:比较大的白色环形进度条 White:白色环形进度条 Gray:灰色环 ...