`

Java IO常用对象

    博客分类:
  • JAVA
阅读更多

 

IO中常用对象


1.字节流
1.1
FileOutputStream fos = new FileOutputStream(getFile());
FileInputStream fis = new FileInputStream(getFile());
1.2
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath + "b.gif"), 1024);
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filePath + "a.gif"));


2.字符流
2.1
FileWriter fw = new FileWriter(getFile(), true);
FileReader fr = new FileReader(getFile());
2.2
BufferedWriter bw = new BufferedWriter(new FileWriter(getFile(), false), 1024);
BufferedReader br = new BufferedReader(new FileReader(getFile()), 1024);

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(getFile())), 1024);
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(getFile())));

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(getFile())));


3.转换流(字节转字符)
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(getFile()));
InputStreamReader reader = new InputStreamReader(new FileInputStream(getFile()));

4.Properties
File file = new File(getFile());
Properties p = new Properties();
p.load(new FileReader(file));
Object obj = p.get("count");
p.setProperty("count", String.valueOf(count));
p.store(new FileWriter(file), "说明");


5.File


6.打印流
PrintStream
PrintWriter


7.管道流
PipedInputStream
PipedOutputStream

 

8.RandomAccessFile

// 生成一个文件,文件第一行保存文件路径名及文件记录的行数,逗号分隔,第一行不包括在内
	// 随机生成指定个数,如果是偶数就保存到文件中并记录个数,第行保存一个数
	// 最后更新文件中记录的行数
	public void createFile() {
		String filePath = "e:/doc/data/abc.txt";
		BufferedWriter writer = null;
		int max = 10000;
		int count = 0;
		try {
			writer = new BufferedWriter(new FileWriter(filePath));
			writer.write(filePath);
			writer.write(",00000000");
			writer.newLine();
			Random random = new Random();
			int value = 0;
			for (int i = 0; i < max; i++) {
				value = random.nextInt(1000000);
				if (value % 2 == 0) {
					writer.write(String.valueOf(value));
					writer.newLine();
					count++;
				}
				if (count % 100 == 0) {
					writer.flush();
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (writer != null) {
				try {
					writer.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		if (count > 0) {
			updateFile(filePath, count);
		}
	}

	// 最后更新文件中记录的行数
	private void updateFile(String filePath, int count) {
		RandomAccessFile accessFile = null;
		try {
			accessFile = new RandomAccessFile(filePath, "rw");
			accessFile.writeBytes(filePath);
			accessFile.writeBytes(",");
			accessFile.writeBytes(String.format("%08d", count));
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (accessFile != null) {
				try {
					accessFile.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

	}

	//直接用RandomAccessFile生成文件并修改
	public void createFile2() {
		String filePath = "e:/doc/data/abc2.txt";
		RandomAccessFile accessFile = null;
		int max = 10000;
		int count = 0;
		try {
			accessFile = new RandomAccessFile(filePath, "rw");
			accessFile.writeBytes(filePath);
			accessFile.writeBytes(",00000000\r\n");
			Random random = new Random();
			int value = 0;
			for (int i = 0; i < max; i++) {
				value = random.nextInt(1000000);
				if (value % 2 == 0) {
					accessFile.writeBytes(String.valueOf(value));
					accessFile.writeBytes("\r\n");
					count++;
				}
			}
			accessFile.seek(0);
			accessFile.writeBytes(filePath);
			accessFile.writeBytes(",");
			accessFile.writeBytes(String.format("%08d", count));
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (accessFile != null) {
				try {
					accessFile.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

 

其中

accessFile.seek(0);
accessFile.writeBytes(filePath);
accessFile.writeBytes(",");
accessFile.writeBytes(String.format("%08d", count));

 可修改为

accessFile.seek(filePath.length() + 1);
accessFile.writeBytes(String.format("%08d", count));

 或

accessFile.seek(0);
accessFile.skipBytes(filePath.length() + 1);
accessFile.writeBytes(String.format("%08d", count));

 

9.序列流
可以将多个读取流合并成一个流
SequenceInputStream


10.对象的序列化
ObjectInputStream
ObjectOutputStream


11.操作基本数据类型的流对象
DataInputStream
DataOutputStream


12.操作数组的流对象
12.1操作字节数组
ByteArrayInputStream
ByteArrayOutputStream
12.2操作字符数组
CharArrayReader
CharArrayWriter


13.编码转换
本机编码
System.getProperty("file.encoding");
常见码表:
ASCII
ISO8859-1
GB2312
GBK
unicode
UTF-8

 

 

 

 

 

 

分享到:
评论

相关推荐

    Java SE编程入门教程 java IO(共28页).pptx

    Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门教程 java static final(共24页).pptx Java SE编程...

    java基础语法、面向对象、常用API、反射&集合、IO流&网络编程

    java基础语法、面向对象、常用API、反射&集合、IO流&网络编程

    java常用代码

    2.WriteFile.java 简单的IO读写文件 3.CurrentMethod.java 获取当前调用方法名 4.StringAndDate.java 字符串与时间对象的相互转换 5.JdbcConn.java java jdbc连接oracle/mysql 6.NioFile.java nio操作文件读写 7....

    Java 常用API的运用,效率及技巧

    Java 常用API的运用,效率及技巧 Java面向对象基本概念 2. System 3. String, StringBuffer 4. 数值,字符,布尔对象与简单类型的操作 5. Class, ClassLoader 6. Java IO系统 7. Java集合类 8. ResourceBundle, ...

    Java SE编程入门教程 java类和对象方法以及包的使用(共62页).pptx

    Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门教程 java static final(共24页).pptx Java SE编程...

    Java SE编程入门教程 java类和对象方法以及包的使用(共56页).pptx

    Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门教程 java static final(共24页).pptx Java SE编程...

    Java SE编程入门教程 java 常用API(共22页).pptx

    Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门教程 java static final(共24页).pptx Java SE编程...

    Java开发详解.zip

    031111_【第11章:Java常用类库】_对象克隆技术笔记.pdf 031112_【第11章:Java常用类库】_Arrays笔记.pdf 031113_【第11章:Java常用类库】_比较器(Comparable、Comparator)笔记.pdf 031114_【第11章:Java常用...

    java开发常用jar包

    Apache Commons包中的一个,通过它可以很方便的解析xml文件生成java对象 aspectjrt.jar 和aspectjweaver.jar Annotation 方式实现 AOP commons-dbcp.jar commons-pool-1.2.jar DBCP数据库连接池 cglib-nodep-2.1_...

    Java之IO流学习总结

    Java IO流对象 1.输入字节流InputStreamIO 中输入字节流的继承图可见上图,可以看出: InputStream 是所有的输入字节流的父类,它是一个抽象类。 ByteArrayInputStream、StringBufferInputStream、FileInputStream ...

    java常用API总结

    Java 常用API的运用,效率及技巧 1. Java面向对象基本概念 2. System 3. String, StringBuffer ...6. Java IO系统 7. Java集合类 8. ResourceBundle, Properties 9. Exceptions 10. JDBC类库 11. 常用设计模式

    Java开发常用jar包

    2.commons-digester.jar:方便地将XML文档所定义的元素转化为JAVA对象。 3.commons-lang.jar; 4.commons-collection.jar包: 5.commons-io.jar包:FileUtil.readLine(),就在这个jar包。 6.commons-HttpClient.jar包...

    2020老杜最新Java零基础进阶视频教程-IO流课件

    本Java视频教程适合有一定编程语言基础的学员观看,在本Java视频教程中讲解了Java面向对象、异常、数组、常用类、集合、IO流、线程、反射机制。该视频教程基于Java13进行讲解,Java13是目前Java最新版本。视频中讲师...

    java开发实战经典(名师讲坛)-李兴华-扫描版

    全书分为23章,包括需要重点掌握的环境搭建、简单Java程序、Java基础程序设计、数组与方法、面向对象程序设计(基础篇和高级篇)、异常的捕获及处理、包及访问控制权限、Java常用类库、JavaIO、Java类集、Java数据库...

    Java SE编程入门教程 java判断循环(共79页).ppt

    Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门教程 java static final(共24页).pptx Java SE编程...

    Java SE编程入门教程 java泛型(共11页).pptx

    Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门教程 java static final(共24页).pptx Java SE编程...

    Java SE编程入门教程 java序列化(共14页).pptx

    Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门教程 java static final(共24页).pptx Java SE编程...

    java常用类解析及示例及一些工具类源代码

    主要讲解了System类、Object类、Arrays类、Cloneable接口、IO系统输入输出类及装饰类、IO系统文本读写工具类、IO系统二进制读写工具类、对象序列化工具类、File类及文件搜索工具类、java异常机制及自定义异常类、...

    2020老杜最新Java零基础进阶视频教程-常用类课件

    本Java视频教程适合有一定编程语言基础的学员观看,在本Java视频教程中讲解了Java面向对象、异常、数组、常用类、集合、IO流、线程、反射机制。该视频教程基于Java13进行讲解,Java13是目前Java最新版本。视频中讲师...

Global site tag (gtag.js) - Google Analytics