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 我们这次实验的目的就是直观感受一 ...
随机推荐
- ajax请求,html调用js
1:html中调用js中的函数,js使用ajax请求向后台请求,返回数据. <!DOCTYPE html> <html lang="en"> <hea ...
- spring requestmapping 拦截多个请求
@RequestMapping(value = {"/picture_content/{id}","/attachment_content/{id}",&quo ...
- WebStorm mac下如何安装WebStorm + 破解
1.下载软件最好的地址就是官网了下载地址 选择好系统版本以后点击DOWNLOAD 下载Webstorm 2.安装双击下载好的安装包.将WebStromt拖入application文件夹,然后在La ...
- linux问题点滴,给普通用户添加sudo权限
最近又把linux捡起来了,虚拟机中安个元老级centos5.3继续搞.使用sudo临时获取超管权限命令时,提示”xxx is not in the sudoers file. This incide ...
- marathon-lb-什么是服务发现?(转)
摘要: 将容器应用部署到集群时,其服务地址,即IP和端口, 是由集群系统动态分配的.那么,当我们需要访问这个服务时,如何确定它的地址呢?这时,就需要服务发现(Service Discovery)了.本 ...
- POJ1273:Drainage Ditches(最大流入门 EK,dinic算法)
http://poj.org/problem?id=1273 Description Every time it rains on Farmer John's fields, a pond forms ...
- spring基础-01
IOC : inversion of 缩写, DI:dependency injection 即在调用者中注入被调用者的实例. AOP 面向切面编程,是代理模式的体现.spring默认使用JDK的动态 ...
- RabittMQ实践(二): RabbitMQ 与spring、springmvc框架集成
一.RabbitMQ简介 1.1.rabbitMQ的优点(适用范围)1. 基于erlang语言开发具有高可用高并发的优点,适合集群服务器.2. 健壮.稳定.易用.跨平台.支持多种语言.文档齐全.3. ...
- Flask 使用富文本输入框
模板 <script src="{{ url_for('static', filename='ckeditor/ckeditor.js') }}"></scrip ...
- springcloud8----feign-with-hystrix
Feign也可以使用Hystrix: package com.itmuch.cloud; import org.springframework.boot.SpringApplication; impo ...