2017.8.16File和IO流的小案列
来源:互联网 发布:windows 安装xcode教程 编辑:程序博客网 时间:2024/06/15 07:29
Io流之递归法:
什么是递归:方法定义中调用方法本身的现象
注意事项:
* A:递归一定要有出口,否则就是死递归
* B:递归的次数不能太多,否则就内存溢出
* C:构造方法不能递归使用
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?
方法一:
public static int fib(int n) { if (n == 1 || n == 2) { return 1; } else { return fib(n - 1) + fib(n - 2); } }
方法二:
int a = 1; int b = 1; for (int x = 0; x < 18; x++) { // 临时变量存储上一次的a int temp = a; a = b; b = temp + b; } System.out.println(b);
方法三
int[] arr = new int[20]; arr[0] = 1; arr[1] = 1; // arr[2] = arr[0] + arr[1]; // arr[3] = arr[1] + arr[2]; // ... for (int x = 2; x < arr.length; x++) { arr[x] = arr[x - 2] + arr[x - 1]; } System.out.println(arr[19]);
案列 二(获取所有.Java的文件)(很重要可以试试看)
public static void main(String[] args) { // TODO Auto-generated method stub File file=new File("F:\\"); getAlljavaFilePath(file); } private static void getAlljavaFilePath(File file) { // TODO Auto-generated method stub File[] list= file.listFiles(); for(File as:list){ if(as.isDirectory()){ getAlljavaFilePath(as); }else{ if(as.getName().endsWith(".java")){ System.out.println(as.getAbsolutePath()); } } } }
案列三:删除文件
public static void main(String[] args) { // 封装目录 File srcFolder = new File("demo"); // 递归实现 deleteFolder(srcFolder); } private static void deleteFolder(File srcFolder) { // 获取该目录下的所有文件或者文件夹的File数组 File[] fileArray = srcFolder.listFiles(); if (fileArray != null) { // 遍历该File数组,得到每一个File对象 for (File file : fileArray) { // 判断该File对象是否是文件夹 if (file.isDirectory()) { deleteFolder(file); } else { System.out.println(file.getName() + "---" + file.delete()); } } System.out .println(srcFolder.getName() + "---" + srcFolder.delete()); } }
IO流的学习
1.用来上传和下载文件等操作。
2.IO流用来设备之间的传输问题。
IO流的分类: * 流向: * 输入流 读取数据 * 输出流 写出数据 * 数据类型: * 字节流 * 字节输入流 读取数据 InputStream * 字节输出流 写出数据 OutputStream * 字符流 * 字符输入流 读取数据 Reader * 字符输出流 写出数据 Writer * 注意:一般我们在探讨IO流的时候,如果没有明确说明按哪种分类来说,默认情况下是按照数据类型来分的。
案列一:
public class FileOutputStreamDemo { public static void main(String[] args) throws IOException { FileOutputStream fos = new FileOutputStream("QST.txt"); fos.write("hello,IO".getBytes()); fos.write("java".getBytes()); }}
字节输出流操作步骤:
A:创建字节输出流对象
B:调用write()方法
C:释放资源
案列二:
public class FileOutputStreamDemo2 { public static void main(String[] args) throws IOException { FileOutputStream fos = new FileOutputStream("yan55.txt"); byte[] bys={97,98,99,100,101}; fos.write(bys); fos.write(bys,1,3); //释放资源 fos.close(); }}
读取数据的方式:
* A:int read():一次读取一个字节
* B:int read(byte[] b):一次读取一个字节数组
*
案列三:
public class FileInputStreamDemo { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream("haah.txt"); int by = 0; while ((by = fis.read()) != -1) { System.out.print((char) by); } // 释放资源 fis.close(); }}
复制文本文件。
数据源:从哪里来
a.txt – 读取数据 – FileInputStream目的地:到哪里去
b.txt – 写数据 – FileOutputStream
案列四:
public class CopyFileDemo { public static void main(String[] args) throws IOException { // 封装数据源 FileInputStream fis = new FileInputStream("a.txt"); // 封装目的地 FileOutputStream fos = new FileOutputStream("b.txt"); int by = 0; while ((by = fis.read()) != -1) { fos.write(by); } // 释放资源(先关谁都行) fos.close(); fis.close(); }}
案列五:
public class CopyImageDemo { public static void main(String[] args) throws IOException { // 封装数据源 FileInputStream fis = new FileInputStream("e:\\haha.jpg"); // 封装目的地 FileOutputStream fos = new FileOutputStream("mn.jpg"); // 复制数据 int by = 0; while ((by = fis.read()) != -1) { fos.write(by); } // 释放资源 fos.close(); fis.close(); }}
案列六:
public class CopyFileDemo { public static void main(String[] args) throws IOException { // 封装数据源 FileInputStream fis = new FileInputStream("c:\\a.txt"); FileOutputStream fos = new FileOutputStream("d:\\b.txt"); // 复制数据 byte[] bys = new byte[1024]; int len = 0; while ((len = fis.read(bys)) != -1) { fos.write(bys, 0, len); } // 释放资源 fos.close(); fis.close(); }}
案列七:
public class BufferedInputStreamDemo { public static void main(String[] args) throws IOException { // BufferedInputStream(InputStream in) BufferedInputStream bis = new BufferedInputStream(new FileInputStream( "bos.txt")); // 读取数据 // int by = 0; // while ((by = bis.read()) != -1) { // System.out.print((char) by); // } // System.out.println("---------"); byte[] bys = new byte[1024]; int len = 0; while ((len = bis.read(bys)) != -1) { System.out.print(new String(bys, 0, len)); } // 释放资源 bis.close(); }}
案列八:
public class BufferedOutputStreamDemo { public static void main(String[] args) throws IOException { // BufferedOutputStream(OutputStream out) // FileOutputStream fos = new FileOutputStream("bos.txt"); // BufferedOutputStream bos = new BufferedOutputStream(fos); // 简单写法 BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream("bos.txt")); // 写数据 bos.write("hello".getBytes()); // 释放资源 bos.close(); }}
案列九:
public class CopyMp4Demo { public static void main(String[] args) throws IOException { long start = System.currentTimeMillis(); // method1("e:\\haah.mp4", "copy1.mp4"); // method2("e:\\hehe.mp4", "copy2.mp4"); // method3("e:\haha.mp4", "copy3.mp4"); method4("e:\\haha.mp4", "copy4.mp4"); long end = System.currentTimeMillis(); System.out.println("共耗时:" + (end - start) + "毫秒"); } // 高效字节流一次读写一个字节数组: public static void method4(String srcString, String destString) throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream( srcString)); BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(destString)); byte[] bys = new byte[1024]; int len = 0; while ((len = bis.read(bys)) != -1) { bos.write(bys, 0, len); } bos.close(); bis.close(); } // 高效字节流一次读写一个字节: public static void method3(String srcString, String destString) throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream( srcString)); BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(destString)); int by = 0; while ((by = bis.read()) != -1) { bos.write(by); } bos.close(); bis.close(); } // 基本字节流一次读写一个字节数组 public static void method2(String srcString, String destString) throws IOException { FileInputStream fis = new FileInputStream(srcString); FileOutputStream fos = new FileOutputStream(destString); byte[] bys = new byte[1024]; int len = 0; while ((len = fis.read(bys)) != -1) { fos.write(bys, 0, len); } fos.close(); fis.close(); } // 基本字节流一次读写一个字节 public static void method1(String srcString, String destString) throws IOException { FileInputStream fis = new FileInputStream(srcString); FileOutputStream fos = new FileOutputStream(destString); int by = 0; while ((by = fis.read()) != -1) { fos.write(by); } fos.close(); fis.close(); }----------
阅读全文
0 0
- 2017.8.16File和IO流的小案列
- File和File的IO流
- File和IO流
- File类和IO流
- File类 和 io流
- File类和IO流
- 黑马程序员_JavaSE的File和IO流
- IO流的前奏. Exception和File类
- 默认目录和多目录的file的创建,file的IO流
- JavaSE学习笔记--IO流和File
- io流基础和file类
- Java 流(Stream)、文件(File)和IO
- IO流(一):File和递归
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java流(Stream)、文件(File)和IO
- 前端算法之简单排序(JS版)
- leetcode --22. Generate Parentheses
- 堆排序(Heap Sort)
- Removing Columns
- 利用jQuery提取和修改文本内容进而对文本内容进行对调
- 2017.8.16File和IO流的小案列
- Windows上安装多个MySQL实例
- Ceph (分布式文件系统)
- Python pyspider 安装与开发
- JQuery效果
- 知识储备:02数组与字符串:利用哈希表实现动态规划
- 浅析Android恶意应用
- 通过RMAN备份恢复数据库到其他服务器
- highcharts 动态页面显示!