最近看到IO操作部分,发现这部分比较模糊了,所以又写一个测试程序来帮忙记忆
如下是代码:
package com.demo;
import java.io.*;
/**
* Created with IntelliJ IDEA.
* User: bokee
* Date: 12-10-9
* Time: 下午5:38
* To change this template use File | Settings | File Templates.
*/
public class IOTest {
public static void main(String[] args)
{
IOTest client=new IOTest();
//client.consoleIO();
// client.FileIO();
//client.FileIO2();
client.stringIO();
//client.OutTest();
// client.OutTest2();
//client.OutTest3();
client.FileWriterTest();
}
/**
* console控制台输入测试
*/
public void consoleIO()
{
System.out.println("console控制台输入测试 开始!");
while(true)
{
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)) ;
try {
System.out.println(reader.readLine());
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
try {
reader.close();
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
//System.out.println("console控制台输入测试 结束!");
}
/**
* StringReader测试
*/
public void stringIO()
{
String str="stringIO:阿呆 还是第一 阿!\n换行试试" ;
StringReader stringReader=new StringReader(str); //从字符串读取数据的推荐做法
BufferedReader bufferedReader=new BufferedReader(stringReader);
String str2=null;
try {
while((str=bufferedReader.readLine())!=null)
System.out.println(str);
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
/**
* 文件读取数据测试 -方式1
* 直接按字符来读取
*/
public void FileIO()
{
System.out.println("文件读取数据测试-方式1 开始!");
BufferedReader reader= null;
try {
reader = new BufferedReader(new FileReader("data.ini"));
} catch (FileNotFoundException e) {
//e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
System.out.println("File 'data.ini' not found");
}
String buffer=null;
try {
while (null != (buffer = reader.readLine()))
System.out.println(buffer);
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
try {
reader.close();
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
System.out.println("文件读取数据测试-方式1 结束!");
}
/**
* 文件读取数据测试-方式2
* 先按字节读取,然后转换成字符
*/
public void FileIO2()
{
System.out.println("文件读取数据测试-方式2 开始!");
BufferedInputStream inputStream=null;
try {
inputStream=new BufferedInputStream(new FileInputStream("data.ini"));
} catch (FileNotFoundException e) {
// e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
System.out.println("File 'data.ini' not found");
}
InputStreamReader inputStreamReader=new InputStreamReader(inputStream); //字节转换成字符
BufferedReader bufferedReader=new BufferedReader(inputStreamReader);
String buffer=null;
try {
while (null != (buffer = bufferedReader.readLine()))
System.out.println(buffer);
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
System.out.println("文件读取数据测试-方式2 结束!");
}
/**
* 文件写的测试
*/
public void FileWriterTest() {
BufferedWriter bufferedWriter= null;
try {
bufferedWriter = new BufferedWriter(new FileWriter("data2.ini",true));
bufferedWriter.write("阿呆 还是第一 阿!\n");
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
/**
* 往控制台输出,使用bufferedWriter
*/
public void OutTest()
{
BufferedWriter bufferedWriter=new BufferedWriter(new OutputStreamWriter(System.out)) ;
try {
bufferedWriter.write("OutTest:阿呆 还是第一 阿! \n 还在阿!");
bufferedWriter.newLine();
/**
* 使用BufferedWriter的话得手工flush,因此下面使用PrintWriter试试
* 然而 在 FileWriterTest 里面可以看到,没有flush也是可以的,纳闷????????????????????????????????
*/
bufferedWriter.flush();
//bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
/**
* 往控制台输出,使用PrintStream
* 发现write方法无效 ,
*/
public void OutTest2()
{
PrintStream printStream=new PrintStream(System.out,true);
printStream.println("OutTest2:阿呆 还是第一 阿! \n 还在阿!");
// printStream.close();
}
/**
* 往控制台输出,使用PrintWriter
* 然而可以看到必须使用flush才行.
* 还发现一点, OutTest2和OutTest3无法同时使用
* 经过一段时间的测试发现导致outTest3无法运行的原因是 printStream.close();
*/
public void OutTest3()
{
PrintWriter printWriter=new PrintWriter(System.out);
printWriter.println("OutTest3:阿呆 还是第一 阿! \n 还在阿!");
printWriter.flush();
//printWriter.close();
}
}
最近看了IO的源码;现在解释下上面的疑问:
System.out的类型是PrintStream;
1,使用printStream发现writer无效:该方法是private的
2.使用printWriter发现必须使用autoflash才行:
PrintWriter printWriter=new PrintWriter(System.out);
这句话里面的autoflush默认是false,所以才会调用println的时候不会自动的flush,除非这样:
PrintWriter printWriter=new PrintWriter(System.out,true);
分享到:
相关推荐
java.io包也是Java内置的包,其中包含一系列对文件和目录的属性进行操作,对文件进行读写操作的类;
拓扑编辑器具有一系列功能,可用于设置、互连和诊断包括端口在内的所有 PROFINET 设备的属性。可提供下列功能和信息: § 项目中所有 PROFINET 设备及其端口的显示 § 使用计算的信号运行时间,为每个端口组态电缆...
你可以利用 Draw.io 绘制一系列的图表、图示或图形,包括流程图、UML 类图、组织结构图、泳道图、E-R 图、文氏图等等,适用于商务、工程、电气、网络设计、软件设计等诸多领域的专业绘图。 Draw.io 现已改名为 ...
BL200系列耦合器是一个数据采集和控制系统,采用Linux操作系统,支持Modbus,MQTT,OPC UA等多种协议,可以快速接入现场PLC、MES、Ignition和SCADA以及ERP系统,同时也能快速连接到AWS云,Thingsboard、华为云以及...
IO操作:结合路径问题用最基础的IO类编写的文件读写删拷贝等一系列操作 正则表达式:源于官方网的一遍报道,里面有自己添加的一些案例等,只要一页,你就能掌握基本的正则表达式 小数格式化:一个工具类,想保留一位...
今天给大家介绍一款Linux运维监控工具 ——wgcloud,功能非常强大,完全开源! wgcloud支持显示CPU利用率、CPU温度、内存利用率、磁盘容量、磁盘IO、硬盘智能健康状态、系统负载、连接数、网卡流量、硬件系统信息等...
针对现代高性能嵌入式系统RapidIO总线信号接入的应用需求,采用K7系列FPGA和mSATA盘设计了一款RapidIO接口存储容量8TB的VPX标准存储板。提出了一种基于AXI总线的RapidIO端口控制器IP核的设计方法。在FPGA内部...
它旨在将 PyTorch 的强大功能应用于音频领域,提供了一系列音频处理工具,使得在 PyTorch 中进行音频相关的机器学习和深度学习任务变得更加便捷。 以下是 torchaudio 的一些关键特性: 音频 I/O 支持:torchaudio ...
gulp.js 是一种基于流的,代码优于配置的新一代构建工具。 Gulp 和 Grunt 类似。但相比于 Grunt 的频繁的 IO 操作,Gulp 的流操作... 易于学习 通过最少的API,掌握Gulp毫不费力,构建工作尽在掌握:如同一系列流管道。
NumPy 系列文章: Python 数据分析三剑客之 NumPy(一):理解 NumPy / 数组基础 ...Python 数据分析三剑客之 NumPy(六):矩阵 / 线性代数库与 IO 操作 文章目录【1×00】NumPy 矩阵库【1×01】
本文实例分析了GO语io包的常用接口。分享给大家供大家参考。...以我的经验来说,接口是一个很重要的知识点,是一系列操作的规范,特别是公共接口尤为重要,如:package io 本文仅仅列举最常用的几个接口,如果您
它提供了一个32位产品系列,该产品系列具有非常高的性能,实时功能,数字信号处理以及低功耗,低压操作,同时保持了完整的集成和易于开发的特性。 (PlatformIO平台注册表中的) (高级用法,软件包,开发板,框架...
Unix 实验室服务器批量管理监控系统,简称 UnixShellManager UnixShellManager 分简装版, 标准版,企业版。 UnixShellManager 实验室批量管理监控系统,能够实现对 windows ... 等等一系列 服务务器硬件和软件服务。
04 ORM多表操作之一对多查询之双下划线查询 05 ORM多表操作之多对多添加记录 06 ORM多表操作之多对多查询 07 ORM多表操作之F查询与Q查询 08 ORM的querySet集合对象的特性 第53章 01 admin介绍 02 alex首秀失败 03 ...
Windows 下 批量管理,批量监控,批量操作,批量安全扫描 linux Solaris Aix HP-Unix Windows 等操作系统界面最简洁的图形工具。... 等等一系列 服务务器硬件和软件服务。 用户名:Admin 密码:qwe0987
Windows 下 批量管理,批量监控,批量操作,批量安全扫描 linux Solaris Aix HP-Unix Windows 等操作系统界面最简洁的图形工具。... 等等一系列 服务务器硬件和软件服务。 用户名:Admin 密码:qwe0987
.1I/O口扩展的原因MCS-51系列单片机共有四个并行I/O口,分别是P0、P1、 P2和 P3。其中P0口一般作地址线的低八位和数据线使用;P2口 作地址线的高八位使用;P3是一个双功能口,其第二功能是一些很重要的控制信号,...
MCU采用GD32,GD32类似STM32,针对ad566r的时序操作是相同的,IO模拟的方式进行IIC通信 软件工程还移植了FreeRTOS,实现一个闪灯任务,并打开了串口0,用于printf打印输出. 设置电压范围 uint32_t ad5665r_a_value = ...
在程序中对文件操作是非常常见的,而对文件的操作则不可避免的需要文件的路径,并对文件的路径进行一系列的操作,例如:判断已知的路径是一个目录还是一个文件,路劲是一个文件则该文件的名称是什么,文件的扩展名名...
StrictMode在Android 2.3(API 9)的时候就已经引入了,虽然到当前这个工具年代比较久远 了,但属实还是非常好用的, 在开发阶段使用这个工具,能够很好的帮助发现开发中的一系列不规范的编码, 例如主线程访问网络...