IO流数据读写总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO流数据读写总结相关的知识,希望对你有一定的参考价值。
1.用java自带的IO读写方法 官方API网站:http://docs.oracle.com/javase/7/docs/api/
2.Apache的Commons-io-2.4.jar中的方法,参考文档:http://commons.apache.org/proper/commons-io/javadocs/api-2.4/index.html
/* * 用apache的ommons-io-2.4.jar的ileUtils类中的方法读写数据 * 常用方法请参考帮助文档 * */ public void readWriteCopyFile(){ File file1 = new File("c:/to.txt"); File file2 = new File("c:/to_new.txt"); try { String input = FileUtils.readFileToString(file1,"gb2312"); System.out.println(input); FileUtils.copyFile(file1, file2); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } String fileName = "C:/to.txt"; File file = new File(fileName); String fileContent = ""; fileContent +="Helloworld"; try { FileUtils.writeStringToFile(file, fileContent, "gb2312"); } catch (IOException e) { e.printStackTrace(); } } /* * 用apache的ommons-io-2.4.jar的ileUtils类中的方法读写数据 * */ public void URLToFileTest(){ try { URL url = new URL("http://www.163.com"); File file = new File("c:\\163.html"); FileUtils.copyURLToFile(url, file); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* * 用apache的ommons-io-2.4.jar的ileUtils类中的方法读写url内容数据 * */ public void readURL() throws IOException{ InputStream in = new URL( "http://www.blogjava.net/ashutc/archive/2010/07/13/325933.html" ).openStream(); try { System.out.println( IOUtils.toString( in ) ); } finally { IOUtils.closeQuietly(in); } } /* * 用apache的ommons-io-2.4.jar的ileUtils类中的方法读写url内容数据 * */ public void downTolocal(){ try { InputStream in = new URL("http://img4.cache.netease.com/tech/2015/12/10/201512101531442cb6f_550.png").openStream(); byte [] gif = IOUtils.toByteArray(in); //IOUtils.write(gif,new FileOutputStream(new File("c:/test.gif"))); //将字符串内容直接写到文件中 FileUtils.writeByteArrayToFile(new File("c:/test.png"),gif) ; //将字节数组内容写到文件中 System.out.println("done"); IOUtils.closeQuietly(in); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* * 使用java自带的带有缓存区字节读写数据---提高读写速度 * */ public void RwByByteStream() { File fileIn = new File("D:/java.docx"); File fileOut = new File("D:/java_new.docx"); long before = System.currentTimeMillis(); FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream(fileIn); fos = new FileOutputStream(fileOut); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } BufferedInputStream bis = new BufferedInputStream(fis,100000); //设置缓冲区及大小 BufferedOutputStream bos = new BufferedOutputStream(fos,100000); //设置输出流缓冲区及大小 byte [] buffer = new byte[10000]; int l; int num = 0; try { while((l=bis.read(buffer))!=-1){ bos.write(buffer, 0, l); num++; } System.out.println(System.currentTimeMillis()-before+"ms"); System.out.println(num); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ try { bos.close(); fos.close(); bis.close(); fis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /* * 使用java字符流读写数据 * * */ public void RWByCharStream() { try { //File file = new File("d:/java.txt"); FileInputStream fis = new FileInputStream("d:/java.txt"); FileOutputStream fos = new FileOutputStream("d:/java_new.txt",true); InputStreamReader isr = new InputStreamReader(fis, "gb2312"); OutputStreamWriter osw = new OutputStreamWriter(fos, "gb2312"); char input[] = new char[100]; int l = 0; while ((l = isr.read(input)) != -1) { //String inputString = new String(input,0,l); osw.write(input,0,l); } isr.close(); fis.close(); osw.close(); fos.close(); System.out.println("done"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /* * 使用java缓冲区字符流读写数据 * * */ public void RWByBufferedCharStream() { try { //File file = new File("d:/java.txt"); FileInputStream fis = new FileInputStream("d:/java.txt"); FileOutputStream fos = new FileOutputStream("d:/java_new.txt",true); //加true表示追加写到这个文件中,否则覆盖此文件 InputStreamReader isr = new InputStreamReader(fis, "gb2312"); OutputStreamWriter osw = new OutputStreamWriter(fos, "gb2312"); BufferedReader br = new BufferedReader(isr); //设置缓冲区 BufferedWriter bw = new BufferedWriter(osw); // PrintWriter pw = new PrintWriter(osw); String input; while ((input = br.readLine()) != null) { bw.write(input); bw.newLine(); System.out.println(input); // pw.println(input); } br.close(); //各流后打开的先关闭,先打开后关闭 bw.flush(); bw.close(); // pw.close(); isr.close(); fis.close(); osw.close(); fos.close(); System.out.println("done"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
以上是关于IO流数据读写总结的主要内容,如果未能解决你的问题,请参考以下文章
java内存流:java.io.ByteArrayInputStreamjava.io.ByteArrayOutputStreamjava.io.CharArrayReaderjava.io(代码片段