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 head命令

    head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾. 1.命令格式: hea ...

  2. android随记

    [Android]中国大部分城市地区的结构定义与按拼音排序  http://blog.csdn.net/sodino/article/details/6739522

  3. IOS之【属性列表】

    @implementation JamesWongViewController - (void)viewDidLoad { [superviewDidLoad]; [selfwritePerson]; ...

  4. UVA 11292 - The Dragon of Loowater (water)

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=sh ...

  5. premake在Ubuntu和GCC环境下创建简单的C++工程

    由于premake基于lua脚本,为了方便编辑lua脚本,我在emacs24中利用package system安装了lua-mode. 然后创建config.lua文件,填入下面这段,主要来自:htt ...

  6. 强大的Http监控工具Fidder

    软件下载:http://fiddler2.com/get-fiddler 软件学习:http://www.cnblogs.com/TankXiao/archive/2012/02/06/2337728 ...

  7. java 基于JDK中的源码总结下String二

    申明:转载请注明出处,如有商用目的请务必知会本人,感谢. 上一篇文章:http://blog.csdn.net/ts1122/article/details/8738336,介绍了String一些易错 ...

  8. 由两代WIN8 Surface平板看微软心态

    要说win8平板的前景非常好,微软的两代surface做的真不错. 可是可是,微软就错在了把价格定的太高.为什么高,一是intel芯价格不低,二是每套win8和office微软得要价几百美金吧! 这两 ...

  9. 将258.369 double值转为内存表示(科学计数法)

    前言 庖丁解牛 - <<庄子>> 庖丁为文惠君解牛,手之所触, 肩之所倚, 足之所履, 膝之所踦, 砉然向然, 奏刀騞然, 莫不中音, 合于<桑林>之舞, 乃中&l ...

  10. 动态面板——axure线框图部件库介绍

    1.什么是Axure的动态面板 按照Axure官方网站的解释 :动态面板控件(Dynamic Panel)可以让你实现高级的交互功能,实现原型的高保真度.动态面板包含有多个状态(states),每个状 ...