`

java需要关注的知识点---IO流

IO 
阅读更多
1.无论何时使用readLine().都不应该使用DataInputStream,而应该使用BufferedReader.
2.RandomAccessFile,只有RandomAccessFile支持搜索操作,并且只适用于文件。
到jdk1.4中,它的大部分功能被nio存储映射文件所取代。
3.读文件的几种方式:
缓冲输入文件
public class BufferedInputFile {
	public static String read(String file) throws IOException{
		StringBuffer sb = new StringBuffer();
		FileReader fileReader = new FileReader(file);
		BufferedReader br = new BufferedReader(fileReader);
		String s = null;
		while((s = br.readLine()) != null) {
			sb.append(s + "\n");
		}
		return sb.toString();
		
	}
	public static void main(String[] args) {
		try {
			System.out.println(read("D:\\RSA75WP\\test\\src\\com\\io\\BufferedInputFile.java"));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

从内存中输入:
public class MemoryInput {
	
	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		StringReader in = new StringReader(BufferedInputFile
				.read("D:\\RSA75WP\\test\\src\\com\\io\\MemoryInput.java"));
		int c;
		while((c = in.read()) != -1) {
			System.out.print((char)c);
		}
	}

}

格式化的内存输入:
public class FormattedMemoryInput {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		DataInputStream dis = new DataInputStream(
				new ByteArrayInputStream(
						(BufferedInputFile
								.read("D:\\RSA75WP\\test\\src\\com\\io\\FormattedMemoryInput.java")
								.getBytes())));
		try {
			while(true) {
				System.out.print((char)dis.readByte());
			}
		} catch (Exception e) {
			System.out.println("End of stream");
		}
	}
	

}

使用available的工作方式会随着所读取的媒介类型不同而有所不同,需要小心使用:
public class TestEof {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		DataInputStream in = new DataInputStream(new BufferedInputStream(
				new FileInputStream(
						"D:\\RSA75WP\\test\\src\\com\\io\\TestEof.java")));
		while (in.available() != 0) {
			System.out.println((char)in.readByte());
		}
	}

}

4.写文件:
DataOutputStream:
public class DateOutputStreamTest {
	public static void main(String[] args) throws IOException {
		DataOutputStream dops = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("Data.txt")));
		dops.writeDouble(3.32);
		dops.writeUTF("test outputStream");
		dops.writeInt(4);
		dops.close();
		DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream("Data.txt")));
		System.out.println(dis.readDouble());
		System.out.println(dis.readUTF());
		System.out.println(dis.readInt());
	}
}	
[b]

RandomAccessFile[/b]
public class UsingRandomAccessFile {
	static String fileNme = "rtest.dat";
	static void display() throws IOException{
		RandomAccessFile raf = new RandomAccessFile(fileNme, "r");
		for ( int i = 0; i< 7 ;i++) {
			System.out.println("Value:" + i + ":" + raf.readDouble());
		}
			System.out.println(raf.readUTF());
			raf.close();
		
	}
	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		RandomAccessFile rf = new RandomAccessFile(fileNme,"rw");
		for(int i = 0; i < 7; i++)
			rf.writeDouble(i*1.414);
		rf.writeUTF("this end of the file");
		rf.close();
		display();
		rf = new RandomAccessFile(fileNme,"rw");
		rf.seek(5*8);
		rf.writeDouble(47.0001);
		rf.close();
		display();
	}

}

读取二进制文件:
public class BinaryFile {
	public static byte[] read(File bFile) throws IOException {
		BufferedInputStream bf = new BufferedInputStream(new FileInputStream(bFile));
		try {
			byte[] data = new byte[bf.available()];
			bf.read(data);
			return data;
		}finally{
			bf.close();
		}
	}
	public static byte[] read(String fileName) throws IOException{
		return read(new File(fileName).getAbsoluteFile());
	}
}
分享到:
评论

相关推荐

    Java知识点总结大全(五) -- IO流.xmind

    Java知识点总结大全(五) -- io流,关注后面会分享面向对象,io,集合,多线程,网络,sql的总结

    Java基础知识点 - 内容比较全面

    Java基础知识点,内容比较全面。 目录: 1.1 Java中的引用概念 1.2 Java多线程相关知识 1.3 Java中的垃圾回收算法 1.4 Java IO流相关知识 1.5 JVM ClassLoader机制 1.6 Java中的synchronized使用 1.7 Java中的...

    编程语言java-io-decorator知识点.pdf

    编程语言java-io-decorator知识点.pdf

    Java IO知识点

    关于IO方面的知识。很基础,但很实用!!

    36个io流相关的知识点

    36个io流相关的知识点,36个io流相关的知识点,36个io流相关的知识点

    java 基础-面向对象-线程-集合-IO流-网络 思维导图大全

    这几个思维导图详细的整理了相关知识点的总结,以尽可能详细全面的进行总结.

    JAVAIO流相关知识点

    JAVAIO流相关知识点,免费下载哦

    java基础的知识点,到IO流

    java基础的知识点,到IO流

    javaIO流思维导图

    自己整理了一下javaIO流的相关知识点 用xmind软件做了一下

    Java中IO流的基础知识点

    Java中IO流的基础知识点

    JAVA面试核心知识点整理283页-2020.pdf.zip

    java面试各大知识点,非常齐全。jvm内存分区,gc算法,类加载机制。并发编程,并发编程各大容器,锁。框架spring mybatis原理,组件介绍。架构设计有设计模式,负载均衡。网络有协议,java 高并发io框架netty。数据...

    Java基础知识点总结.docx

    Java学习更是如此,知识点总结目录如下: 目录 一、 Java概述 3 二、 Java语法基础 5 数据类型 5 运算符号 14 语句 15 函数 15 方法重载(Overloadjing)与重写(Overriding) 16 数组 17 总结 18 三、 常见关键字 ...

    动力节点_Java基础视频教程173_-IO-流分类

    动力节点的Java课程适合绝对零基础的观看,...每一个知识点都讲解的非常细腻,由浅入深。适合非计算机专业,想转行做Java开发的朋友,或者想让Java基础更扎实的小伙伴,配套资料下载:http://www.bjpowernode.com/?csdn

    java核心知识点整理

    java详细的知识点整理,包括:jvm原理、IO、类加载过程、集合、线程、反射、泛型等java基础,spring原理、特点,微服务架构、数据库引擎、消息组件、算法、数据结构等。偏理论的知识较多,主要用于面试。

    java的IO流操作

    java的IO流操作,在java中是非常的知识点。开发者掌握基本点io流操作是非常重要的。

    Java基础知识点.html

    类加载器 ClassLoader 反射 Stream 流 函数式编程 Lambda 表达式 网络编程-协议 网络编程-端口 网络编程-IP 多线程 IO流-字节流 IO流-字符流 IO流-转换流 File Map HashMap 序列化和反序列化 可变参数 类型通配符 ...

    java各知识点详细总结(毕向东笔记整理)

    java各知识点详细总结(毕向东笔记整理)。第一章:编程基础 3-11 第二章:数组 11 -31 第三章:面向对象程序开发 31 -74 第四章:异常机制 74 -89 第五章:多线程技术 89 -122122122 第六章:常用类 API 122API 122 ...

    java-IO流与异常机制学习笔记

    自己总结,知识点全面,包含了,IO流,异常机制等学习笔记 含有代码实例可供参考,需要mybase打开 持续更新,需要的自行下载 附上本人写的学习博客 https://blog.csdn.net/qq_35577787/article/details/105088073

    Java中IO流知识点总结

    一、流的分类  1、按功能分  读取流:InputStream Reader  写出流:OutPutStream Writer  2、按流的类型分类  字节流:InputStream OutputStream  字符流:Reader Writer  二、流功能分析  读取流...

    JAVA面试核心知识点整理.rar

    java面试各大知识点,非常齐全。jvm内存分区,gc算法,类加载机制。并发编程,并发编程各大容器,锁。框架spring mybatis原理,组件介绍。架构设计有设计模式,负载均衡。网络有协议,java 高并发io框架netty。数据...

Global site tag (gtag.js) - Google Analytics