java IO 学习(一)给了java io 进行分类,这一章学习这些类的常用方法

一、File

  1、创建一个新的File的实例:

             /**
* 创建一个新的File实例
*/
File f = new File("D:/file/3.jpg");// unix系统
File f2 = new File("D:\\file\\3.jpg");// windows系统
File f3 = new File("D:\\file", "3.jpg");
File f4 = new File(f3.toURI());
File f5 = new File("a.jpg");

  2、该File实例的常用方法

             if (f2.canExecute()) {
System.out.println("该文件可以被执行");
}
if (f2.canRead()) {
System.out.println("该文件可以被读取");
}
if (f2.canWrite()) {
System.out.println("该文件可以被写入(修改)");
}
System.out.println("比较两个File实例(f2,f3)的字典:" + f2.compareTo(f3));
if (f.createNewFile()) {
System.out.println("当且仅当具由该实例表示的文件尚不存在时,创建一个新的空文件,并返回true");
}
if (!f.exists()) {
System.out.println("该实例表示的文件不存在");
}
if (!f.isFile()) {
System.out.println("该实例不是标准文件");
}
if (!f.isDirectory()) {
System.out.println("该实例不是目录");// 目录就是文件夹
}
if (!f.isHidden()) {
System.out.println("该实例不是隐藏文件");
}
// 获取文件名或目录名
String name = f.getName();
// 获取文件绝对路径
String absolutePath = f.getAbsolutePath();
// 获取文件父目录
String parent = f.getParent();
// 获取文件路径
String path = f.getPath();
long lastUpdate = f.lastModified();
long length = f.length();
// 创建此抽象路径名指定的目录
f.mkdir();
// 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录
f.mkdirs();
// 重新命名此抽象路径名表示的文件,就是对该文件的路径进行重命名
// 如果父路径相同,就是对该文件的重命名,如果父路径不一样,就是移动该文件的位置,目标文件已存在时移动失败
f.renameTo(new File("D:/file/2/1.jpg"));
// 删除该文件
f.delete();

二、InputStream

  1、一般创建一个InputStream实例由它的子类 FileInputStream 来完成。

             /**
* 读取文件的原始字节流
*/
FileInputStream fip = new FileInputStream("D:\\file\\3.jpg");// 通过路径
FileInputStream fip2 = new FileInputStream(f2);// 通过File实例

  2、它拥有的常用方法以及它子类的常用方法

             /**
* 读取文件的原始字节流
*/
FileInputStream fip = new FileInputStream("D:\\file\\3.jpg");// 通过路径
FileInputStream fip2 = new FileInputStream(f2);// 通过File实例
// 获取该流可以读取(或跳过)的字节数的估计值(int)
System.out.println(fip.available());
// 获取从输入流读取数据的下一个字节
System.out.println(fip.read());
// 从输入流读取一些(new byte[100].length=100)字节数,并将它们存储到缓冲区 new
// byte[100],返回读取的字节数
System.out.println(fip.read(new byte[100]));
// 从输入流的0位置开始读取最多 100字节的数据到一个new byte[100],返回读取的字节数
System.out.println(fip.read(new byte[100], 0, 100));
// 跳过并丢弃100个字节数,返回实际跳过的字节数
fip.skip(100);
if (fip.markSupported()) {
System.out.println("这个输入流支持 mark和 reset方法");
// 标记此输入流中的当前位置
fip.mark(12);
// 将此流重新定位到上次在此输入流上调用 mark方法时的位置
fip.reset();
}
// 关闭流
fip.close();
/**
* 子类DataInputStream多了.readLong();等一些方法,别的子类与父类基本相同,多出来的方法我们新人一般用不到
*/

三、OutputStream

             // 声明和InputStream基本一样,多了一个:true 表示字节将被写入到文件的末尾,而不是开头(append)
FileOutputStream os = new FileOutputStream("D:\\file\\3.jpg", true);
// 将指定的字节写入此输出流
os.write(0);
// 将 new byte[100].length字节从new byte[100]写入此输出流
os.write(new byte[100]);
// 从new byte[100]写入 50个字节,从偏移 0开始输出到此输出流
os.write(new byte[100], 0, 50);
// 刷新此输出流并强制任何缓冲的输出字节被写出
os.flush();
// 关闭流
os.close();
// 创建一个新的字节数组输出流,具有100大小的缓冲区容量,不填不指定大小
ByteArrayOutputStream baos = new ByteArrayOutputStream(100);
// 创建一个新分配的字节数组
byte[] b = baos.toByteArray();
// 将此字节数组输出流的 count字段重置为零,以便丢弃输出流中当前累积的所有输出
baos.reset();
// 使用utf-8字符集将缓冲区内容转换为字符串解码字节, 不填则用平台默认
baos.toString("utf-8");
/**
* 子类DataOutputStream多了.writeLong();.size()等一些方法,别的子类与父类基本相同,多出来的方法我们新人一般用不到
*/

java IO 学习(三)的更多相关文章

  1. Java IO学习--(三)通道

    Java IO中的管道为运行在同一个JVM中的两个线程提供了通信的能力.所以管道也可以作为数据源以及目标媒介. 你不能利用管道与不同的JVM中的线程通信(不同的进程).在概念上,Java的管道不同于U ...

  2. Java IO学习笔记三

    Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...

  3. Java IO学习笔记三:MMAP与RandomAccessFile

    作者:Grey 原文地址:Java IO学习笔记三:MMAP与RandomAccessFile 关于RandomAccessFile 相较于前面提到的BufferedReader/Writer和Fil ...

  4. Java IO学习笔记:概念与原理

    Java IO学习笔记:概念与原理   一.概念   Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存 中,形成了 ...

  5. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

  6. Java IO(三)FileDescriptor

    Java IO(三)FileDescriptor 一.介绍 FileDescriptor 是文件描述符,用来表示开放文件.开放套接字等.当 FileDescriptor 表示文件时,我们可以通俗的将 ...

  7. Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer

    作者:Grey 原文地址:Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer ByteBuffer.allocate()与ByteBuffer.allocateD ...

  8. Java IO学习笔记四:Socket基础

    作者:Grey 原文地址:Java IO学习笔记四:Socket基础 准备两个Linux实例(安装好jdk1.8),我准备的两个实例的ip地址分别为: io1实例:192.168.205.138 io ...

  9. Java IO学习笔记五:BIO到NIO

    作者:Grey 原文地址: Java IO学习笔记五:BIO到NIO 准备环境 准备一个CentOS7的Linux实例: 实例的IP: 192.168.205.138 我们这次实验的目的就是直观感受一 ...

随机推荐

  1. Miller-Rabin素数测试算法(POJ1811Prime Test)

    题目链接:http://poj.org/problem?id=1811 题目解析:2<=n<2^54,如果n是素数直接输出,否则求N的最小质因数. 求大整数最小质因数的算法没看懂,不打算看 ...

  2. HDU5124:lines(线段树+离散化)或(离散化思想)

    http://acm.hdu.edu.cn/showproblem.php?pid=5124 Problem Description John has several lines. The lines ...

  3. http-从域名到页面

    目录 1. 网络基础 TCP/IP HTTP DNS URI, URL, and URN URI的格式 2. HTTP简单概括 通过实例看HTTP HTTP报文组成 3. 使用Firefox修改请求首 ...

  4. BCB中换行 需要 \r\n

    例如: fprintf(fp,"\n");无换行效果 fprintf(fp,"\r\n");有换行效果

  5. malloc calloc realloc 区别

    (1)C语言跟内存分配方式 <1>从静态存储区域分配.       内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量.static变量.<2> ...

  6. NodeJS学习笔记五

    Promise简介 所谓Promise,就是一个对象,用来传递异步操作的消息. Promise对象有以下两个特点. (1)对象的状态不受外界影响.Promise对象代表一个异步操作,有三种状态:Pen ...

  7. (15)如何使用Cocos2d-x 3.0制作基于tilemap的游戏:第三部分(完)

    引言 程序截图: 在第二部分教程中,Ray教大家如何在地图中制作可碰撞的区域,如何使用tile属性,如何制作可以拾取的物品以及如何动态修改地图.如何使用“Heads up display”来显示分数. ...

  8. SQL学习笔记之项目中常用的19条MySQL优化

    在写文章之前,首先感谢 飞友科技 陆老师提供的文档.. 声明一下:下面的优化方案都是基于 “ Mysql-索引-BTree类型 ” 的 0x00 EXPLAIN 做MySQL优化,我们要善用 EXPL ...

  9. PHP多进程学习(三)__代码案例来了解父进程与子进程的执行顺序

    pcntl_fork创建子进程成功的话,系统就有了2个进程,一个为父进程,一个为子进程,父进程和子进程都继续向下执行,子进程的id号为$pid(父进程会获取子进程的$pid也就是$pid不为0,而子进 ...

  10. FromBottomToTop第十一周项目博客

    FromBottomToTop第十一周项目博客 项目内容 塔防游戏 大体就是在地图上以合理阵型建设防御炮塔来阻止小怪进入我方阵地.玩家需用现有的金币进行炮台建设或升级,金币数可根据打怪个数增加.入侵的 ...