缓冲输入文件、输出文件

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter; public class Test {
public static void main(String[] args) throws IOException{
BufferedReader input = new BufferedReader(new FileReader("D:/test.txt"));
PrintWriter output=new PrintWriter(new BufferedWriter(new FileWriter("D:/test_copy.txt")));
String s;
while((s=input.readLine())!=null){
output.print(s); //readLine()取出文件的一行内容时,是将换行符是删除了的。
}
input.close();
output.close(); //缓冲区可能仍有内容,不要忘记正确的关闭它。
}
}

从内存中读入(将一个string通过StringReader读入)

import java.io.IOException;
import java.io.StringReader; public class Test {
public static void main(String[] args) throws IOException{
StringReader input = new StringReader("这是一个字符串");
int c;
while((c=input.read())!=-1){
System.out.println((char)c); //read()返回的一个int形式,必须类型转换为char才能正确打印。
}
input.close();
}
}

格式化的内存输入,此时需要用到面向字节的I/O类(InputStream)

import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException; public class Test {
public static void main(String[] args) throws IOException{
DataInputStream input = new DataInputStream(new ByteArrayInputStream("This".getBytes()));
while(input.available()!=0){ //判断是否还有剩余的字节。(由于是一个个字节读取,故所有字节都是合法的结果,因此返回值不能用来检测输入是否结束,我们只能使用available判断是否读取完毕。
System.out.println((char)input.readByte()); //readBytes一次次读入一个字节。还有类似的readChar/readFloat/readDouble/readInt等
}
}
}

使用DataInputStream来存储和恢复数据

DataInputStream/DataOutputStream可以确保我们读取数据一致(无论平台有多么不同)。这一点是非常重要的。缺点就是我们必须知道流中数据项所在的确切位置。

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException; public class Test {
public static void main(String[] args) throws IOException{
DataOutputStream output=new DataOutputStream(new BufferedOutputStream(new FileOutputStream("test.txt")));
output.writeDouble(3.1415926535);
output.writeUTF("使用UTF编码");
output.writeInt(123);
output.close(); DataInputStream input=new DataInputStream(new BufferedInputStream(new FileInputStream("test.txt")));
System.out.println(input.readDouble());
System.out.println(input.readUTF());
System.out.println(input.readInt());
input.close();
}
}

读写随机访问文件

【I/O】常见输入输出的更多相关文章

  1. java学习笔记--1_常见输入输出语句熟悉篇章

    今天上oj,想来是准备做做算法和数据结构的.看了看以前做的基础题目,想着就先熟悉一下java的语言吧! 以下是今天做的10道题目. 备注:oj有时候对格式要求非常严格,因为不在格式上纠结太久,只要ec ...

  2. Hadoop 之面试题

    颜色区别: 蓝色:hive,橙色:Hbase.黑色hadoop 请简述hadoop怎样实现二级排序. 你认为用Java,Streaming,pipe 方式开发map/reduce,各有哪些优缺点: 6 ...

  3. [ACM训练] ACM中巧用文件的输入输出来改写acm程序的输入输出 + ACM中八大输入输出格式

    ACM中巧用文件的输入输出来改写acm程序的输入输出 经常有见大神们使用文件来代替ACM程序中的IO,尤其是当程序IO比较复杂时,可以使自己能够更专注于代码的测试,而不是怎样敲输入. C/C++代码中 ...

  4. Atitit常见的标准化组织与规范数量jcp ecma iso

    Atitit常见的标准化组织与规范数量jcp ecma iso 1. 常见的标准化组织1 1.1. 重要的基金会apache1 1.2. 美国国家标准学会(American NationalStand ...

  5. java中常见的几种Runtimeexception

    转自http://blog.csdn.net/qq635785620/article/details/7781026 一般面试中java Exception(runtimeException )是必会 ...

  6. Java基础常见英语词汇

    Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的                             ['prəʊɡræmɪŋ]编程 OO: object ...

  7. python补充最常见的内置函数

    最常见的内置函数是: print("Hello World!") 数学运算 abs(-5)                         # 取绝对值,也就是5 round(2. ...

  8. 常见的几种RuntimeException

    一般面试中java Exception(runtimeException )是必会被问到的问题 常见的异常列出四五种,是基本要求.更多的....需要注意积累了   常见的几种如下:   NullPoi ...

  9. C语言初学者代码中的常见错误与瑕疵(5)

    问题: 素数 在世博园某信息通信馆中,游客可利用手机等终端参与互动小游戏,与虚拟人物Kr. Kong 进行猜数比赛. 当屏幕出现一个整数X时,若你能比Kr. Kong更快的发出最接近它的素数答案,你将 ...

随机推荐

  1. 如何让VS检查函数和类Comment的添加情况

    问题: 现在有一个大的项目,我不能确定是否每个类和函数是否已经加上了comments,是否每个comments都是标注正确的. VS中有没有检查Comments的功能? 解决方案: 1.右击proje ...

  2. Python 基础之列表去重的几种玩法

    列表去重 1.方法1 借助一个临时列表 ids = [1,2,3,3,4,2,3,4,5,6,1] news_ids = [] for id in ids: if id not in news_ids ...

  3. OpenvSwitch2.4.0源码解读

    原文发表在我的博客主页,转载请注明出处! 一.前言 OpenvSwitch,虚拟交换机,以下简称OVS,是云计算和SDN领域非常重要的一个开源交换机,如果需要深入研究云计算和SDN的数据平面,读懂OV ...

  4. 使用sendmail来发邮件

    安装sendEmail sendEmail是一个免费.轻量级.命令行的SMTP邮件客户端. 如果你需要使用命令行方式发送邮件,那么sendEmail是非常完美的选择:使用简单.功能强大. wget - ...

  5. 【BZOJ2212】[Poi2011]Tree Rotations 线段树合并

    [BZOJ2212][Poi2011]Tree Rotations Description Byteasar the gardener is growing a rare tree called Ro ...

  6. java反射——字段

    大家都知道反射技术在Java里面时非常重要的一个技术点,因为Java好多框架的编写都是基于反射的,别的不多说,spring框架里面的IOC就是基于反射实现.那么什么是反射呢?JAVA反射机制是在运行状 ...

  7. Active Object pattern

    http://www.ibm.com/developerworks/cn/java/j-lo-activeobject/ 之所以叫, 主动对象, 区别于被动对象, 只能被动被别人调用的对象, 而主动对 ...

  8. JS当页换图片(分析href所给的信息)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DT ...

  9. 转!! 关于jsp编码设置 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

    我们在写jsp页面的时候经常会在页面头部使用如下代码: <%@ page language="java" contentType="text/html; chars ...

  10. Linux(6)- redis发布订阅/持久化/主从复制/redis-sentinel/redis-cluster、nginx入门

    一.redis发布订阅 Redis 通过 PUBLISH .SUBSCRIBE 等命令实现了订阅与发布模式. 其实从Pub/Sub的机制来看,它更像是一个广播系统,多个Subscriber可以订阅多个 ...