Java基础--输入输出(上篇)

IO

|--Writer

|--FileWriter

void write(int c) 写入单个字符。

void write(char[] cbuf, int off, int len) 将字符写入数组的某一部分。

void write(String str, int off, int len) 写入一部分字符串。

void flush() 刷新该流的缓冲。

void close() 关闭此流,但要先刷新它。

|--BufferedWriter

void newLine() 写入一个行分隔符。

|--OutputStreamWriter

|--Reader

|--FileReader 两种读取方法(两种复制方法)

|--BufferedReader 特有读取方法(复制方法)

String readLine()  读取一个文本行。

|--LineNumberReader 带行号读取方法

void setLineNumber(int lineNumber) 设置当前行号。

 

|--OutputStream

|--FileOutputStream

|--BufferedOutputStream

|--InputStream

|--FileInputStream 三种读取方法

|--BufferedInputStream

 

import java.io.*;
class FileWriterDemo{
	public static void main(String[] args)throws IOException{
		//通过FileWriter类像将字符串写入demo.txt文件中
		FileWriter fw = new FileWriter("demo.txt");
		fw.write("Hello world");
		fw.close();
	}
}

//IO异常处理方式
FileWriter fw = null;
try{
	fw = new FileWriter("test.txt");
	fw.write("Hello world");
}
catch(IOException e){
	sop("catch"+e.toString());
}
finally{
	try{
		if(fw!=null){
			fw.close();
		}
	}
	catch(IOException e){
		sop(e.toString());
	}
}

//对已有文件续写
FileWriter fw = new FileWriter("test.txt",true);
fw.write("hehe");
fw.close();

//FileReader读取两种方式:
FileReader fr = new FileReader("test.txt");
//方式一:一次读一个字符
int ch = 0;
while((ch=fr.read())!=-1){
	sop((char)ch);
}
fr.close();
//方式二:存储到字符数组,再将其打印到控制台
char[] buff = new char[1024];
int len = 0;
while((len=fr.read(buff))!=-1){
	sop(new String(buff,0,len));
}
fr.close();

//文件复制的两种方法:
	//方式一:一次复制一个字符
FileReader fr = new FileReader("test.txt");
FileWriter fw = new FileWriter("copy.txt");
int ch = 0;
while((ch=fr.read())!=-1){
	fw.write(ch);
}
fr.close();
fw.close();
	//存储到字符数组,再将其复制到指定文件中
FileReader fr = null;
FileWriter fw = null;
try{
	fr = new FileReader("test.txt");
	fw = new FileWriter("copy.txt");
	char[] buff = new char[1024];
	int len = 0;
	while((len=fr.read(buff))!=-1){
		fw.write(buff,0,len);
	}
}
catch(IOException e){
	throw new RuntimeException("failed");
}
finally{
	try{
		if(fr!=null){
			fr.close();
		}
	}
	catch(IOException e){
		throw new RuntimeException("failed");
	}
	try{
		if(fw!=null){
			fw.close();
		}
	}
	catch(IOException e){
		throw new RuntimeException("failed");
	}
}

//缓冲区(有newLine()、记得刷新):BufferedWriter
BufferedWriter bw = new BufferedWriter("test.txt");
for(int i=0;i<5;i++){
	bw.write("abcd"+i);
	bw.newLine();
	bw.flush();
}

//BufferedReader读取
FileReader fr = new FileReader("test.txt");
BufferedReader br = new BufferedReader(fr);
[BufferedReader br = new BufferedReader(new FileReader("test.txt"));]
String line = null;
while((line=br.readLine())!=null){
	sop(line);
}
br.close();

//通过缓冲区复制一个文件
BufferedReader br = null;
BufferedWriter bw = null;
try{
	br = new BufferedReader(new FileReader("test.txt"));
	bw = new BufferedWriter(new FileWriter("copy.txt"));
	String line = null;
	while((line=br.readLine())!=null){
		bw.write(line);
		bw.newLine();
		bw.flush();
	}
}
catch(IOException e){
	throw new RuntimeException("failed");
}
finally{
	try{
		if(br!=null){
			br.close();
		}
	}
	catch(IOException e){
		throw new RuntimeException("failed");
	}
	try{
		if(bw!=null){
			bw.close();
		}
	}
	catch(IOException e){
		throw new RuntimeException("failed");
	}
}

///装饰设计模式:模拟一个BufferedReader类XXXXXXXXXXXXXXXXX
class MyBR extends BufferedReader{
	private Reader r;
	MyBR(Reader r){
		this.r = r;
	}
	public String myReadLine() throws IOException{
		StringBuilder sb = new StringBuilder();
		int ch = 0;
		while((ch=r.read())!=-1){
			if(ch='\r'){
				continue;
			}
			if(ch='\n'){
				return sb.toString();
			}else{
				sb.append((char)ch);
			}
			return null;
		}
	}
	public int read(char[] cb,int off,int len)throws IOException{
		return r.read(cb,off,len);
	}
	public void myClose()throws IOException{
		r.close();
	}
}
class Demo{
	public static void main(String[] args){
		MyBR mbr = new MyBR(new FileReader("test.txt"));
		String line = null;
		while((line=mbr.readLine())!=null){
			sop(line);
		}
		mbr.close();
	}
}


//LineNumberReader读取一个文件(带行号)
FileReader fr = new FileReader("test.txt");
LineNumberReader lnr = new LineNumberReader(fr);
String line = null;
lnr.setLineNumber(7);
while((line=lnr.readLine())!=null){
	sop(lnr.getLineNumber()+"::"+line);
}
lnr.close();
///模拟一个LineNumberReader类XXXXXXXXXXXXXXXXXXXXXX
class MyLineNumberReader extends Reader{
	private Reader r;
	MyLineNumberReader(Reader r){
		this.r = r;
	}
	public String myReadLine()throws IOException{
		lineNumber++;
		return super.myReadLine();
	public void setLineNumber(int lineNumber)
	{
		this.lineNumber = lineNumber;
	}
	public int getLineNumber()
	{
		return lineNumber;
	}
	}
}


//InputStreaam、OutputStream 字节
//FileOutputStream写字节文件
FileOutputStream fos = new FileOutputStream("test.txt");
fos.write("dcfvgb".getBytes());
fos.close();
//FileInputStream读取三种方式:
FileInputStream fis = new FileInputStream("test.jpg");
	//方式一:一次复制一个字节
int ch = 0;
while((ch=fis.read())!=-1){
	sop((char)ch);
}
fis.close();
	//方式二:存储到字节数组,再将其打印到控制台
byte[] buff = new byte[1024];
int len = 0;
while((len=fis.read(buff))!=-1){
	sop(new String(buff,0,len));
}
fis.close();
	//定义一个刚刚好的缓冲区,不需要再循环
byte[] buff = new byte[fis.available()];
fis.read(buff)
sop(new String(buff));
fis.close();

//字节流复制图片
FileInputStream fis = null;
FileOutputStream fos = null;
try{
	fis = new FileInputStream("test.jpg");
	fos = new FileOutputStream("copy.jpg");
	byte[] buff = new byte[1024];
	int len = 0;
	while((len=fis.read(buff))!=-1){
		fos.write(buff,0,len);
	}
}
catch(IOException e){
	throw new RuntimeException("failed");
}
finally{
	try{
		if(fis!=null){
			fis.close();
		}
	}
	catch(IOException e){
		throw new RuntimeException("failed");
	}
	try{
		if(fos!=null){
			fos.close();
		}
	}
	catch(IOException e){
		throw new RuntimeException("failed");
	}
}

//字节流复制mp3(通过缓冲区)
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("test.mp3"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(copy.mp3));
int ch = 0;
while((ch=bis.readLine)!=-1){
	fos.write((char)ch);
}
bis.close();
bos.close();
[long start = System.currentTimeMillis()]	//系统当前时间

//模拟一个BufferedInputStreamXXXXXXXXXXXXXXXXXXXXXXX
class MyBI{
	private InputStream is;
	private byte[] buff = new byte[1024];
	private int pos = 0, count = 0;
	MyBI(InputStream is){
		this.is = is;
	}
	//一次读一个字节,从缓冲区(字节数组)获取
	public int myRead()throws IOException{
		if(count == 0){
			count = is.read(buff);
			if(count < 0){
				return -1;
			}
			pos = 0;
			byte b = buff[pos];
			count--;
			pos++;
			return b&255;
		}
		else if(count > 0){
			byte b = buff[pos];
			count--;
			pos++
			return b&0xff;
		}
		return -1;
	}
	public void myClose()throws IOException{
		is.close();
	}
}


//**键盘录入**
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String line = null;
while((line=br.readLine())!=null){
	if(!"over".equals(line)){
		bw.write(line);
	}
}

//为提高效率,将字节流转换成字符流,再使用BufferedReader(使用readLine())
InputStreamReader  		     VS  		     OutputStreamWriter

/*
读取键盘录入
System.in		标准输入设备:键盘
System.out		标准输出设备:控制台
*/
InputStream is = System.in;
StringBuilder sb = new StringBuilder();
while(true){
	int ch = is.read();
	if(ch='\r'){
		continue;
	}
	if(ch='\n'){
		String s = sb.toString();
		if("over".equals(s)){
			break;
		}
		sop(s.toUpperCase());
		sb.delete(0,len.length());
	}else{
		sb.appen((char)ch);
	}
}

///ExceptionInfo

import java.io.*;
import java.util.*;
import java.text.*;
class  ExceptionInfo
{
	public static void main(String[] args)throws IOException 
	{
		try
		{
			int[] arr = new int[2];
			System.out.println(arr[3]);
		}
		catch (Exception e)
		{
			
			try
			{
				Date d = new Date();
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				String s = sdf.format(d);

				PrintStream ps = new PrintStream("exeception.log");
				ps.println(s);
				System.setOut(ps);

				
			}
			catch (IOException ex)
			{
				throw new RuntimeException("日志文件创建失败");
			}
			e.printStackTrace(System.out);
		}
	}
}
///SystemInfo
import java.util.*;
import java.io.*;
class  SystemInfo
{
	public static void main(String[] args) throws IOException
	{
		Properties prop = System.getProperties();

		//System.out.println(prop);
		prop.list(new PrintStream("sysinfo.txt"));
	}
}

/*
File类
创
	boolean creatNewFile():指定位置创建文件,若已存在→不创建,返回false
	boolean mkdir()		  :创建文件夹
	boolean mkdirs()	  :创建多级文件夹
删
	boolean delete()	  :若文件正在被操作等→删除失败返回false
	void deleteOnExit():  :退出程序时删除指定文件
判
	boolean exists()	  :文件是否存在
	
	isFile()
	isDirectory()
	is Hidden()
	isAbsolute()
查
	getName()
	getPath()
	getParent()
	getAbsolutePath()
	long lastModified()
	long length()
	
	路径\\→File.seperator
	f2.renameTo(f1);
*/

BufferedReader br = new BufferedReader(new InputStream(System.in))

BufferedWriter bw = new BufferedWriter(new OutputStream(System.out))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值