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. 关于ML的思考讲座-周zh-11.30日

    1.深度神经网络 1.以往神经网络采用单或双隐层结构,虽然参照了生物上的神经元,但是从本质上来说还是数学,以函数嵌套形成. 2.通常使用的激活函数是连续可微(differentiable)的,sigm ...

  2. 4.9 Routing -- Query Parameters

    一.概述 1. 在URL中查询参数是可选的key-value对,出现在?的右边.例如,下面的URL有两个查询参数,sort和page,对应的值分别是ASC和2. example:http://exam ...

  3. C++中的RAII介绍 资源管理

    摘要 RAII技术被认为是C++中管理资源的最佳方法,进一步引申,使用RAII技术也可以实现安全.简洁的状态管理,编写出优雅的异常安全的代码. 资源管理 RAII是C++的发明者Bjarne Stro ...

  4. 表单验证—js循环所有表单验证

    [封装为表单验证的专用js,所有表单页面都可以调用] 1.表单 <form id="regForm" method="post" action=" ...

  5. 生成对抗网络(Generative Adversarial Network)阅读笔记

    笔记持续更新中,请大家耐心等待 首先需要大概了解什么是生成对抗网络,参考维基百科给出的定义(https://zh.wikipedia.org/wiki/生成对抗网络): 生成对抗网络(英语:Gener ...

  6. surface知识点

    SurfaceView和TextureView 在学习直播的过程遇到一个问题:连麦场景下能够支持大小窗口切换(即小窗口变大,大窗口变小),大窗口是TextView(用于拉流显示),而小窗口是Surfa ...

  7. linux第七章读书笔记

    Vim编辑器 Vim 仅仅通过键盘来在插入和执行命令等多种模式之间切换.这使得Vim可以不用进行菜单或者鼠标操作,并且最小化组合键的操作,对文字录入员或者程序员可以大大增强速度和效率. CHAPTER ...

  8. Java8 Lambda

    Demo: package com.qhong; public class Main { public static void main(String[] args) throws Exception ...

  9. Github 下载项目的某一分支版本

    参考:如何在 GitHub 下载某个程序的特定版本(代码)? 在安装ntf做int实验的时候,发现int demo的这个repo是该项目的一个branch,与master分支不一致(5 commits ...

  10. 重器--biomart

    biomart 重器 biomaRt工具包的作用在于它可以轻松地完成的在多个生物学数据库上繁琐地检索,获取相关数据在不同数据库间的关联.