Java基础知识之IO(2)
2015-05-31 09:59
387 查看
文件复制小案例(温习Java基础知识之IO(1)中的知识)
[code]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.[code]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类的实例可以根据传入不同的实例化对象完成不同的功能,具体看例子。
[code]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()方法,是直接对文件进行操作,效率低下。[code]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(); } }
相关文章推荐
- java个人学习笔记:位运算符
- Java web基础总结十之—— jsp EL表达式
- 错误处理( Java compiler level)
- eclipse调试常用快捷键
- java synchronized的运用
- java个人学习笔记 自增自减(前后) 赋值运算(扩展的赋值运算)逻辑运算符
- JAVA反射机制
- 深入探讨 Java 类加载器
- eclipse开发php全过程的搭建带debug的配置
- Spring AOP 深入剖析
- SpringMVC笔记
- java相关
- eclipse-ubuntu14.04图标替换不掉的问题
- 10 Things Every Java Programmer Should Know about String
- java动态代理(JDK和cglib)
- Java_多线程学习汇总
- java_正则表达式汇总笔记
- Java @override报错的解决方法
- Java_File类和递归
- eclipse - 下载网址