博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java基础review(3)---IO基本总结
阅读量:4075 次
发布时间:2019-05-25

本文共 5241 字,大约阅读时间需要 17 分钟。

一、io的的介绍

 

1、网上盗图一张,主要的类结构

二、demo案例总结

1、Reader、Writer

     *  FileReader/FileWriter : 从文件读字符数据,写入字符数据到文件

     *  CharArrayReader/Writer:从char数组读数据到字符串缓冲区,写字符串、char数组到字符串缓冲区。
     *  BufferedReader/BufferedWriter:包装字符流输入输出,内部有buff缓冲

@Test	public void test1() throws IOException {		// 1、FileReader/FileWriter		//Reader reader = new FileReader("");		//Writer writer = new FileWriter("");				// 2、CharArrayReader/Writer		//CharArrayReader charReader = new CharArrayReader("char array".toCharArray());		//CharArrayWriter charWriter = new CharArrayWriter(); 				// 3、BufferedReader/BufferedWriter		//BufferedReader bufferedReader = new BufferedReader(charReader);		//BufferedWriter wirter = new BufferedWriter(charWriter);				// 4 、基本操作范例		String source = "werrhewgergeorgergerg \r\nwer werwe ";		Reader input = new CharArrayReader(source.toCharArray());		CharArrayWriter output = new CharArrayWriter();		char[] buffer = new char[8061];        int n = 0;        while (-1 != (n = input.read(buffer))) {        	output.write(buffer, 0, n);        	//buffWrap.write(buffer, 0, n);        }        System.out.println(output.toCharArray());	}

 2、outputStream, InputStream 

     * FileInputStream/FileOutputStream : 从文件读取字节流,写入字节流到文件

     * ByteArrayInputStream/output : 从bytes数组读数据到字节缓冲区,写字节数组到缓冲区。
     * BufferFileInputStream/output: 包装字节流输入输出
     * ObjectInputStream/ObjectInputStream:对象流,系列化对象,和反系列化对象

@Test	public void test2() throws Exception {		// 1、FileInputStream/FileOutputStream		//InputStream in = new FileInputStream("file");		//OutputStream out = new FileOutputStream("file");				// 2、ByteArrayInputStream/output		//ByteArrayInputStream in = new ByteArrayInputStream("123".getBytes());		//ByteArrayOutputStream out = new ByteArrayOutputStream();				// 3、ObjectInputStream/ObjectInputStream 		     // 系列化		 ByteArrayOutputStream byteStream = new ByteArrayOutputStream(128);		 ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteStream);         objectOutputStream.writeObject(new Integer(1)); // 此对象必须是实现Serializable         objectOutputStream.flush();         byte[] result =  byteStream.toByteArray();             // 反系列化         ByteArrayInputStream intStream = new ByteArrayInputStream(result);         ObjectInputStream objectInputStream = new ObjectInputStream(intStream);         Object dis_result = objectInputStream.readObject();         System.out.println(dis_result); // 1	}

     3、OutputStreamWriter、InputStreamReader

     * InputStreamReader: 字符串中间流(字节)。
     * OutputStreamWriter:字符串输出中间流 (输出字节到字符),(主要还有可以指定字符编码)。

@Test	public void test3() throws Exception {		BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));		// OutputStreamWriter可以从字符串输出到字节流,并且可以指定编码。        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out,"UTF-8"));        String buf=null;		while ((buf = reader.readLine()) != null) {			if (buf.equals("exit"))				break;			writer.write(buf);			writer.newLine();			writer.flush();		}        reader.close();        writer.close();	}

4、字符打印流:PrintWriter

* 构造函数可以传递参数: File, String ,OutputStream, writer	 */	public void test4() throws IOException {		BufferedReader buff = new BufferedReader(new InputStreamReader(System.in)); //键盘录入		PrintWriter out1 = new PrintWriter(System.out); //标准输出 ,不自动刷新		//PrintWriter out2 = new PrintWriter(System.out, true); //true代表自动刷新 (只能用println,printf,print自动刷新)		String line = null;		while ((line = buff.readLine()) != null) {			if("ok".equals(line))				break;			out1.println(line.toUpperCase());		}		out1.close();		buff.close();	}

 5、File类的一些演示

// 1、基本操作		File f = new File(this.getClass().getClassLoader().getResource("").getPath()				+ File.separator + this.getClass().getName().replace(".", File.separator));		System.out.println(f.getParent()); // 本类文件的父级		if (!f.getParentFile().exists()) { // 创建父级目录 -- 文件父目录不存在不可创建文件			f.getParentFile().mkdirs();		}		File[] list = f.getParentFile().listFiles();		for (File file : list) {			System.out.println(file);		}		File f2 = new File(f.getParent()+File.separator+"abc.txt");		f2.createNewFile(); // 创建到了bin下了,在src下看不到的。				// 2、getAbsolutePath和getCanonicalPath区别		File file = new File("../src/java/a.text"); 		System.out.println(file.getPath()); 		System.out.println(file.getAbsolutePath());  // F:\java001\demo00_javase\..\src\java\a.text		System.out.println(file.getCanonicalPath()); // F:\java001\src\java\a.text

 6、获取包路径下的所有class文件

@Test	public void test6() {		String packageName = "com";		List
list = findAllClassByPackage(packageName); System.out.println(list); } /** * 获取包路径下所有的class */ public static List
findAllClassByPackage(String pageAgeName) { List
result = new ArrayList<>(); String classPath = IO.class.getClassLoader().getResource("").getPath(); File file = new File(classPath + File.separator + pageAgeName.replace(".", File.separator)); if (!file.exists()) { return result; } File[] files = file.listFiles(); for (int i = 0; i < files.length; i++) { if (!files[i].isDirectory()) { String className = files[i].getPath().replace(classPath.substring(1).replace("/", "\\"), "").replace("\\", ".") .replace(".class", ""); result.add(className); } else { result.addAll(findAllClassByPackage(pageAgeName + "." + files[i].getName())); } } return result; }

 

 

 

 

转载地址:http://ieuni.baihongyu.com/

你可能感兴趣的文章
SSH原理与运用
查看>>
SIGN UP BEC2
查看>>
S3C2440中对LED驱动电路的理解
查看>>
Windows CE下USB摄像头驱动开发(以OV511为例,附带全部源代码以及讲解) [转]
查看>>
出现( linker command failed with exit code 1)错误总结
查看>>
iOS开发中一些常见的并行处理
查看>>
iOS获取手机的Mac地址
查看>>
ios7.1发布企业证书测试包的问题
查看>>
如何自定义iOS中的控件
查看>>
iOS 开发百问
查看>>
Mac环境下svn的使用
查看>>
github简单使用教程
查看>>
如何高效利用GitHub
查看>>
环境分支-git版本管理
查看>>
uni-app 全局变量
查看>>
java 不用递归写tree
查看>>
springboot2 集成Hibernate JPA 用 声明式事物
查看>>
fhs-framework jetcache 缓存维护之自动清除缓存
查看>>
SpringBoot 动态编译 JAVA class 解决 jar in jar 的依赖问题
查看>>
fhs-framework springboot mybatis 解决表关联查询问题的关键方案-翻译服务
查看>>