Java基础知识之IO(2)
来源:互联网 发布:caliber软件 编辑:程序博客网 时间:2024/04/30 00:34
文件复制小案例(温习Java基础知识之IO(1)中的知识)
package copy;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;public class CopyDemo { public static void main(String[] args) throws IOException { String from = "E:"+File.separator+"psu.jpg";//要复制的文件 String to = "C:" + File.separator;// 要存储的文件 File file_from = new File(from);// 实例化文件 // 若源文件不存在,则需要退出 if (!file_from.exists()) { System.out.println("源文件不存在!"); return; } File file_to = new File(to);//实例化文件 //若目标位置不存在,退出 if(!file_to.exists()){ System.out.println("目标位置不存在!"); } file_to = new File(to+"copy.jpg");//新建文件 //实例化输入,输出流(相对于程序而言,数据的流向) InputStream in = new FileInputStream(file_from); OutputStream out = new FileOutputStream(file_to); int temp; //边度边写 while((temp = in.read())!=-1){ out.write(temp); } //关闭流 in.close(); out.close(); }}
内存操作流(ByteArrayInputStream、ByteArrayOutputStream)
注意:这两个内所操作的数据位置是相对于内存而言,从程序向内存写入数据使用ByteArrayInputStream,反之使用ByteArrayOutputStream.
import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;/* * 将字符串读入到内存,将其转换为大写后,输出 */public class ByteArrayDemo { public static void main(String[] args) { String str = "hello world";//需要操作的字符串 //实例化流对象 ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayInputStream in = new ByteArrayInputStream(str.getBytes()); int temp; while((temp=in.read())!=-1){ char c=(char)temp; out.write(Character.toUpperCase(c)); } //循环结束后,字符串的内容存储在内存中。 System.out.println(out.toString()); }}
重点注意数据的存在位置。
打印流(PrintStream、PrintWriter)
1、PrintStream
先观察期构造方法:public PrintStream(OutputStream out)
实例化该类时,需要传入字节输出流对象,我们知道OutputStream是一个抽象类,依赖于其子类进行实例化,由此可以推测出,PrintStream类的实例可以根据传入不同的实例化对象完成不同的功能,具体看例子。
package PrintStrem;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.io.PrintStream;public class PrintStremDemo { private static PrintStream outPrint; public static void main(String[] args) throws IOException, IOException { File file = new File( "E:"+File.separator+"javaio"+File.separator+"FileOutputStream.txt"); OutputStream out = new FileOutputStream(file,true); outPrint = new PrintStream(out); //不换行输出 outPrint.print(false); outPrint.print('c'); //换行输出 outPrint.println(true); outPrint.println(123.3132); //格式化输出 String name = "高洋";int age = 20; outPrint.printf("姓名:%s;年龄:%d", name,age); }}
从例子中可以看出,这种输出方法很方便,可以输出任意类型数据。
BufferedReader
从缓冲区读入数据,包装输入流,从而提高了读入的效率,因为直接使用输入流的read()方法,是直接对文件进行操作,效率低下。
import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;public class BufferedReaderDemo { public static void main(String[] args) throws IOException { File file = new File("E:"+File.separator+"javaio"+File.separator+"FileOutputStream.txt");//创建文件对象 //BufferedReader构造接收Reader类对象进行实例化,所以Reader类的子类的对象都可以为其实例化 BufferedReader read = new BufferedReader(new FileReader(file)); int temp = 0; while((temp = read.read())!=-1){ char c = (char)temp; System.out.print(c); } read.close(); }}
0 0
- Java基础知识之IO(2)
- Java基础知识之IO(1)
- Java基础知识-IO流2
- Java基础知识之IO流(一)
- Java基础知识之IO流(二)
- Java IO流(一)基础知识
- Java基础知识 十二 IO流 (上)
- Java基础知识 十三 IO流(下)
- Java基础知识IO流(拷贝文本文件)
- Java基础知识IO流(BufferedWriter&BufferedReader)
- Java基础知识IO流(File)
- Java基础知识IO流(Properties)
- Java基础知识IO流(其他类)
- Java基础知识IO流(练习)
- Java基础知识IO流(拷贝文本文件)
- java基础知识IO简单介绍 (二)
- Java基础知识-IO流(八)
- java io基础知识
- static char __setup_str_##unique_id[] __initdata __aligned(1) = str
- oracle调用存储过程和函数返回结果集
- 面试题21:包含min函数的栈
- 日经春秋 20150531
- 机房重构之七层登录
- Java基础知识之IO(2)
- javascript处理HTML的Encode(转码)和Decode(解码)总结
- 日经社説 20150531 各国で鉄鋼過剰への対応を
- Redhat6.2升级为6.3之后再降级为Redhat6.2 (linux内核降级)
- mybatis连接mysql数据库实现的jdbc功能
- 跟我学Java反射——二步曲
- 个人发展(职业规划)
- Project Euler: Problem 17 Number letter counts
- 日经社説 20150531 G7は世界経済の安定へ責任を果たせ