java IO 学习(三)
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 学习(三)的更多相关文章
- Java IO学习--(三)通道
Java IO中的管道为运行在同一个JVM中的两个线程提供了通信的能力.所以管道也可以作为数据源以及目标媒介. 你不能利用管道与不同的JVM中的线程通信(不同的进程).在概念上,Java的管道不同于U ...
- Java IO学习笔记三
Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...
- Java IO学习笔记三:MMAP与RandomAccessFile
作者:Grey 原文地址:Java IO学习笔记三:MMAP与RandomAccessFile 关于RandomAccessFile 相较于前面提到的BufferedReader/Writer和Fil ...
- Java IO学习笔记:概念与原理
Java IO学习笔记:概念与原理 一.概念 Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存 中,形成了 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
- Java IO(三)FileDescriptor
Java IO(三)FileDescriptor 一.介绍 FileDescriptor 是文件描述符,用来表示开放文件.开放套接字等.当 FileDescriptor 表示文件时,我们可以通俗的将 ...
- Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer
作者:Grey 原文地址:Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer ByteBuffer.allocate()与ByteBuffer.allocateD ...
- Java IO学习笔记四:Socket基础
作者:Grey 原文地址:Java IO学习笔记四:Socket基础 准备两个Linux实例(安装好jdk1.8),我准备的两个实例的ip地址分别为: io1实例:192.168.205.138 io ...
- Java IO学习笔记五:BIO到NIO
作者:Grey 原文地址: Java IO学习笔记五:BIO到NIO 准备环境 准备一个CentOS7的Linux实例: 实例的IP: 192.168.205.138 我们这次实验的目的就是直观感受一 ...
随机推荐
- redis客户端hiredis
Hiredis 在官网 http://redis.io/clients 中有说明This is the official C client. Support for the whole command ...
- 创建工具条ToolBar
/***ToolBar***/ QToolBar * tlb_ImageOpen; QToolBar * tlb_VideoOpen; QToolBar * tlb_AudioOpen; void M ...
- cocos代码研究(22)Widget子类Layout学习笔记
理论基础 一个包含控件的容器. 子节点可以根据布局类型重新排序,它还可以开启剪裁,设置背景图像和颜色.继承自Widget,以及LayoutProtocol. 被 HBox, PageView, Rel ...
- SEO笔记:构建URL的15个SEO最佳实践
By: Rand Fishkin 原文链接:https://moz.com/blog/15-seo-best-practices-for-structuring-urls #1: Whenever p ...
- jmeter命令行运行与生成报告
一. 使用命令行方式运行Jmeter 1.1 为什么 使用GUI方式启动jmeter,运行线程较多的测试时,会造成内存和CPU的大量消耗,导致客户机卡死. 所以正确的打开方式是在GUI模式下调 ...
- 搭建Mybatis 出现 Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for mapper.BatchCustomer.findBatchCustomerOneToOne
Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection doe ...
- 20165207 实验一 Java开发环境的熟悉
20165207 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1652 姓名:李天林 学号:20165207 实验日期:2018年4月2日 实验序号:一 实验名称: ...
- jQuery源码分析--Event模块(1)
jQuery的Event模块提供了强大的功能:事件代理,自定义事件,自定义数据等.今天记录一下它实现的原理. 我们都知道,在js的原生事件中,有事件对象和回调函数这两样东西.但是事件对象是只读的,所以 ...
- jQuery获取不到隐藏DIV的高度和宽度
今天做公司订单系统的修改,有同事将订单维护的四个部分拆成了四个小的tab页,由于数据表格时动态加载,所以表格的高度是动态变化的,可不知怎么,先点哪个哪个的高度就正常,其他的都是最小值,这下蒙了,这个找 ...
- linux体系结构与内核结构图解
1.当被问到Linux体系结构(就是Linux系统是怎么构成的)时,我们可以参照下图这么回答:从大的方面讲,Linux体系结构可以分为两块: (1)用户空间:用户空间中又包含了,用户的应用程序,C库 ...