您的位置:首页 > 编程语言 > Java开发

Java学习日志(18-2-IO流-文本文件读写操作)

2016-09-19 00:00 447 查看
Input Output

IO流用于处理设备之间的数据传输

Java对数据的操作是通过流的方式

Java用于操作流的对象都在IO包中

流按操作数据分为字节流与字符流

流按流向分为输入流与输出流

字节流的抽象基类

InputStream OutputStream

字符流的抽象基类

Reader Writer

文件创建刷新练习

/*
字符流两个基类
InputStream	OutputStream
字符流两个基类
Reader	Writer

字符流特点
数据最常见体现形式:文件
以操作文件为主来演示

需求:在硬盘上创建一个文件并写入数据
找到一个专门用于操作文件的Writer子类对象-FileWriter
*/
import java.io.*;
class FileWriterDemo{
public static void main(String[] args)throws IOException{
// 创建一个FileWriter对象,已被初始化就必须要明确被操作的文件
//创建一个demo文本,明确数据存放的目的地
FileWriter fw=new FileWriter("demo.txt");
// 将字符写入流
fw.write("I Love XB");
// 刷新流对象中的数据-刷入目的地
fw.flush();
// fw.close();
//close关闭流资源,关闭前会将数据刷入目的地,之后不可继续使用
}
}

IO异常处理方式

/*
IO异常的处理方式
*/
import java.io.*;
class FileWriterDemo2{
public static void main(String[] args){
FileWriter fw=null;
try{
fw=new FileWriter("demo2.txt");
fw.write("IloveXB");
}
catch(IOException e){
System.out.println(e.toString());
}
finally{
/*
运行后必然关闭流,节约资源,因此放入finally
close抛出异常因此需要处理
*/
try{
if(fw!=null){
fw.close();
}
}
catch(IOException e){
System.out.println(e.toString());
}
}
}
}

文件的续写

/*
文件的续写
*/
import java.io.*;
class FileWriterDemo3{
public static void main(String[] args){
FileWriter fw=null;
try{
//为true则续写,否则创建
fw=new FileWriter("demo.txt",true);
fw.write("\r\n+10086");
}
catch(IOException e){
System.out.println(e.toString());
}
finally{
try{
if(fw!=null){
fw.close();
}
}
catch(IOException e){
System.out.println(e.toString());
}
}
}
}

文本文件读取方式一

import java.io.*;
class FileReaderDemo{
public static void main(String[] args)throws Exception{
/*
创建一个文件读取流对象,和指定名称的文件相关联
必须保证文件存在,否则发生异常-FileNotFoundException
*/
FileReader fr=new FileReader("demo.txt");
// read():一次读一个字符,自动往下读,没有则返回-1
int ch=0;
while((ch=fr.read())!=-1){
System.out.println("ch="+(char)ch);
}

/* while(true){
int ch=fr.read();
if(ch==-1){
break;
}
System.out.println("ch="+(char)ch);
} */
fr.close();
}
}

文本文件读取方式二

import java.io.*;
class FileReaderDemo2{
public static void main(String[] args)throws Exception{
FileReader fr=new FileReader("demo.txt");
// 定义一个字符数组用于存储
// 该read(char[])返回字符个数,长度通常定义为1024
char[] buf=new char[1024];
int num=0;
while((num=fr.read(buf))!=-1){
System.out.println("num="+num+"::"+new String(buf,0,num));
}
fr.close();

}
}

读取练习

// 读取一个java文件,打印在控制台上
import java.io.*;
class FileReaderTest{
public static void main(String[] args)throws Exception{
FileReader fr=new FileReader("SystemDemo.java");
char[] buf=new char[1024];
int num=0;
while((num=fr.read(buf))!=-1){
System.out.pr
3ff0
intln(new String(buf,0,num));
}
fr.close();
}
}

拷贝文本文件

// 将C盘一个文本文件复制到D盘
/*
原理:
将C盘的文件储存到D盘
步骤:
1.在D盘创建一个文件,用于存储C盘文件中的数据
2.定于读取流和C盘文件的关联
3.通过不断的读写完成数据的存储
4.关闭流
*/
import java.io.*;
class CopyTest{
public static void main(String[] args){

}
// 从C盘读一个字符就往D盘写一个字符
public static void copy_1()throws Exception{
// 创建目的地
FileWriter fw=new FileWriter("RuntimeDemo_copy.txt");
// 与已有文件关联
FileReader fr=new FileReader("RuntimeDemo.java");
int ch=0;
while((ch=fr.read())!=-1){
fw.write(ch);
}
fw.close();
fr.close();
}
public static void copy_2(){
FileWriter fw=null;
FileReader fr=null;
try{
fw=new FileWriter("SystemDemo_copy.txt");
fr=new FileReader("SystemDemo.java");
char[]buf=new char[1024];
int len=0;
while((len=fr.read(buf))!=-1){
fw.write(buf,0,len);
}
}
catch(IOException e){
throw new RuntimeException("读写失败");
}
finally{
if(fr!=null){
try{
fr.close();
}
catch(IOException e){

}
}
if(fw!=null){
try{
fw.close();
}
catch(IOException e){

}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: