java中的IO流
2016-05-12 18:35
405 查看
1、内存流
a、ByteArrayOutputStream
b、ByteArrayInputStream
2、对象流
a、ObjectOutputStream
b、ObjectInputStream
所有的对象流操作的对象必须实现了序列化接口。
3、随机读写
a、RandomAccessFile
a、seek(long pos):指针将停留在最后一次访问的位置上,seek方法,
是将指针移动到初始位置。
b、getFilePointer:返回文件当前指针的所在位置。
4、File类
a、可读/可写/执行
b、创建文件
c、删除文件或者目录的操作
d、虚拟机终止时,删除文件或目录
e、判断文件或者文件目录是否存在
f、得到一个文件或目录的绝对路径(可以返回File或String)
g、得到文件的文件名
h、返回当前文件的父目录
i、判断一个目录是否为绝对路径
j、判断抽象路径是否为一个文件夹
k、判断是否为一个文件
l、判断该文件是否为一个隐藏文件
m、查看这个文件最后一次修改的时间
n、返回一个目录下的文件以及文件目录
o、返回文件长度1kb = 1024byte 1m = 1024 kb 1g = 1024M 1T = 1024G
p、创建文件目录
q、创建制定文件目录,如果中间目录不存在,则依次创建
r、返回一个URI
URI URL
总结:URL是URI的子集。
5、IO概念种类:
a、基于字节的操作
b、基于字符的操作
c、基于磁盘的操作:File
d、基于网络的操作:Socket
package main;
import java.io.File;
public class CoreJavaDay19 {
public static void main(String[] args) {
// IOUtils.ramStream();
// File file = new File("C:\\Users\\Administrator\\Desktop\\Z.JJ");
// Message message = new Message();
// message.setName("隔壁老王");
// message.setContent("今晚在家吗?");
// message.setDate("2016-4-25 11:03");
// IOUtils.objectWriteStream(file, message);
//
// Message message2 = IOUtils.objectReadStream(file);
// System.out.println(message2.toString());
File file = new File("C:\\Users\\Administrator\\Desktop\\DEMO.txt");
// IOUtils.randomRead(file, 20);
// IOUtils.randomWrite(file, "#", 3);
IOUtils.insertByRandomAccessFile(file, 1, "###");
}
}
package main;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.RandomAccessFile;
public class IOUtils {
/**
* 内存流
*/
public static void ramStream(){
String string = "helloworld";
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(string.getBytes());
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int hasRead = 0;
while((hasRead = byteArrayInputStream.read()) != -1){
char c = (char)hasRead;
byteArrayOutputStream.write(Character.toUpperCase(c));
}
// System.out.println(byteArrayOutputStream.toString());
String result = new String(byteArrayOutputStream.toByteArray(), 0, string.length());
System.out.println(result);
}
/**
* 对象流 写入操作
*/
public static void objectWriteStream(File file, Message message){
ObjectOutputStream objectOutputStream = null;
try {
objectOutputStream = new ObjectOutputStream(new FileOutputStream(file, false));
objectOutputStream.writeObject(message);
objectOutputStream.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(objectOutputStream != null){
try {
objectOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 对象流读取操作
* @param file
* @return
*/
public static Message objectReadStream(File file){
ObjectInputStream objectInputStream = null;
Message message = null;
try {
objectInputStream = new ObjectInputStream(new FileInputStream(file));
message = (Message) objectInputStream.readObject();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}catch (ClassNotFoundException e) {
e.printStackTrace();
}finally{
if(objectInputStream != null){
try {
objectInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return message;
}
/**
* RandomAccessFile
*/
public static void randomRead(File file, int pointer){
/*
* r代表以可读方式打开
* rw代表可读可写方式打开
*/
RandomAccessFile randomAccessFile = null;
try {
randomAccessFile = new RandomAccessFile(file, "r");
System.out.println("当前指针的位置是:" + randomAccessFile.getFilePointer());
randomAccessFile.seek(pointer);
byte[] bytes = new byte[1024];
int hasRead = 0;
while((hasRead = randomAccessFile.read(bytes)) != -1){
System.out.println(new String(bytes, 0, hasRead));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
if(randomAccessFile != null){
try {
randomAccessFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 写文件
*/
public static void randomWrite(File file, String appendContent,long seek){
RandomAccessFile randomAccessFile = null;
try {
randomAccessFile = new RandomAccessFile(file, "rw");
randomAccessFile.seek(randomAccessFile.length());
randomAccessFile.write(appendContent.getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
/**
* 随机插入
*/
public static void insertByRandomAccessFile(File file, long pointer, String insertContent){
try {
File tempFile = File.createTempFile("temp", null);
tempFile.deleteOnExit();
RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");
FileOutputStream fileOutputStream = new FileOutputStream(tempFile);
FileInputStream fileInputStream = new FileInputStream(tempFile);
randomAccessFile.seek(pointer);
System.out.println(randomAccessFile.getFilePointer());
byte[] bytes = new byte[1024];
int hasRead = 0;
while((hasRead = randomAccessFile.read(bytes)) != -1){
fileOutputStream.write(bytes, 0, hasRead);
}
randomAccessFile.seek(pointer);
System.out.println(randomAccessFile.getFilePointer());
fileOutputStream.flush();
randomAccessFile.write(insertContent.getBytes());
System.out.println(randomAccessFile.getFilePointer());
while((hasRead = fileInputStream.read(bytes)) != -1){
randomAccessFile.write(bytes, 0, hasRead);
}
randomAccessFile.close();
fileOutputStream.close();
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package main;
import java.io.Serializable;
public class Message implements Serializable{
private static final long serialVersionUID = 1L;
private String name;
private String content;
private String date;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
@Override
public String toString() {
return "发送消息者:" + name + " 消息内容:" + content + " 发送时间:" + date;
}
}
a、ByteArrayOutputStream
b、ByteArrayInputStream
2、对象流
a、ObjectOutputStream
b、ObjectInputStream
所有的对象流操作的对象必须实现了序列化接口。
3、随机读写
a、RandomAccessFile
a、seek(long pos):指针将停留在最后一次访问的位置上,seek方法,
是将指针移动到初始位置。
b、getFilePointer:返回文件当前指针的所在位置。
4、File类
a、可读/可写/执行
b、创建文件
c、删除文件或者目录的操作
d、虚拟机终止时,删除文件或目录
e、判断文件或者文件目录是否存在
f、得到一个文件或目录的绝对路径(可以返回File或String)
g、得到文件的文件名
h、返回当前文件的父目录
i、判断一个目录是否为绝对路径
j、判断抽象路径是否为一个文件夹
k、判断是否为一个文件
l、判断该文件是否为一个隐藏文件
m、查看这个文件最后一次修改的时间
n、返回一个目录下的文件以及文件目录
o、返回文件长度1kb = 1024byte 1m = 1024 kb 1g = 1024M 1T = 1024G
p、创建文件目录
q、创建制定文件目录,如果中间目录不存在,则依次创建
r、返回一个URI
URI URL
总结:URL是URI的子集。
5、IO概念种类:
a、基于字节的操作
b、基于字符的操作
c、基于磁盘的操作:File
d、基于网络的操作:Socket
package main;
import java.io.File;
public class CoreJavaDay19 {
public static void main(String[] args) {
// IOUtils.ramStream();
// File file = new File("C:\\Users\\Administrator\\Desktop\\Z.JJ");
// Message message = new Message();
// message.setName("隔壁老王");
// message.setContent("今晚在家吗?");
// message.setDate("2016-4-25 11:03");
// IOUtils.objectWriteStream(file, message);
//
// Message message2 = IOUtils.objectReadStream(file);
// System.out.println(message2.toString());
File file = new File("C:\\Users\\Administrator\\Desktop\\DEMO.txt");
// IOUtils.randomRead(file, 20);
// IOUtils.randomWrite(file, "#", 3);
IOUtils.insertByRandomAccessFile(file, 1, "###");
}
}
package main;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.RandomAccessFile;
public class IOUtils {
/**
* 内存流
*/
public static void ramStream(){
String string = "helloworld";
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(string.getBytes());
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int hasRead = 0;
while((hasRead = byteArrayInputStream.read()) != -1){
char c = (char)hasRead;
byteArrayOutputStream.write(Character.toUpperCase(c));
}
// System.out.println(byteArrayOutputStream.toString());
String result = new String(byteArrayOutputStream.toByteArray(), 0, string.length());
System.out.println(result);
}
/**
* 对象流 写入操作
*/
public static void objectWriteStream(File file, Message message){
ObjectOutputStream objectOutputStream = null;
try {
objectOutputStream = new ObjectOutputStream(new FileOutputStream(file, false));
objectOutputStream.writeObject(message);
objectOutputStream.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(objectOutputStream != null){
try {
objectOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 对象流读取操作
* @param file
* @return
*/
public static Message objectReadStream(File file){
ObjectInputStream objectInputStream = null;
Message message = null;
try {
objectInputStream = new ObjectInputStream(new FileInputStream(file));
message = (Message) objectInputStream.readObject();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}catch (ClassNotFoundException e) {
e.printStackTrace();
}finally{
if(objectInputStream != null){
try {
objectInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return message;
}
/**
* RandomAccessFile
*/
public static void randomRead(File file, int pointer){
/*
* r代表以可读方式打开
* rw代表可读可写方式打开
*/
RandomAccessFile randomAccessFile = null;
try {
randomAccessFile = new RandomAccessFile(file, "r");
System.out.println("当前指针的位置是:" + randomAccessFile.getFilePointer());
randomAccessFile.seek(pointer);
byte[] bytes = new byte[1024];
int hasRead = 0;
while((hasRead = randomAccessFile.read(bytes)) != -1){
System.out.println(new String(bytes, 0, hasRead));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
if(randomAccessFile != null){
try {
randomAccessFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 写文件
*/
public static void randomWrite(File file, String appendContent,long seek){
RandomAccessFile randomAccessFile = null;
try {
randomAccessFile = new RandomAccessFile(file, "rw");
randomAccessFile.seek(randomAccessFile.length());
randomAccessFile.write(appendContent.getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
/**
* 随机插入
*/
public static void insertByRandomAccessFile(File file, long pointer, String insertContent){
try {
File tempFile = File.createTempFile("temp", null);
tempFile.deleteOnExit();
RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");
FileOutputStream fileOutputStream = new FileOutputStream(tempFile);
FileInputStream fileInputStream = new FileInputStream(tempFile);
randomAccessFile.seek(pointer);
System.out.println(randomAccessFile.getFilePointer());
byte[] bytes = new byte[1024];
int hasRead = 0;
while((hasRead = randomAccessFile.read(bytes)) != -1){
fileOutputStream.write(bytes, 0, hasRead);
}
randomAccessFile.seek(pointer);
System.out.println(randomAccessFile.getFilePointer());
fileOutputStream.flush();
randomAccessFile.write(insertContent.getBytes());
System.out.println(randomAccessFile.getFilePointer());
while((hasRead = fileInputStream.read(bytes)) != -1){
randomAccessFile.write(bytes, 0, hasRead);
}
randomAccessFile.close();
fileOutputStream.close();
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package main;
import java.io.Serializable;
public class Message implements Serializable{
private static final long serialVersionUID = 1L;
private String name;
private String content;
private String date;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
@Override
public String toString() {
return "发送消息者:" + name + " 消息内容:" + content + " 发送时间:" + date;
}
}
相关文章推荐
- java-用HttpURLConnection发送Http请求.
- IE7降低内存和降低CPU的几个技巧
- VBScript 剪贴板抓取URL并在浏览器中打开
- 如何高效的使用内存
- DOS下内存的配置
- XP/win2003下发现1G的内存比512M还慢的解决方法
- sql2005 附加数据库出错(错误号:5123)解决方法
- PowerShell实现动态获取当前脚本运行时消耗的内存
- 用vbs 实现从剪贴板中抓取一个 URL 然后在浏览器中打开该 Web 站点
- C#实现把dgv里的数据完整的复制到一张内存表的方法
- SQL语句实现查询SQL Server内存使用状况
- C#中File类的文件操作方法详解
- asp获取URL参数的几种方法分析总结[原创]_应用技巧_脚本之家
- C语言内存对齐实例详解
- 深入学习C语言中memset()函数的用法
- C#实现在网页中根据url截图并输出到网页的方法
- 全局变量与局部变量在内存中的区别详细解析
- asp #include file 与 #include virtual 的区别小结第1/2页
- zend framework框架中url大小写问题解决方法
- VB读取线程、句柄及写入内存的API代码实例