InputStream抽象类是所有类字节输入流的超类

    InputStream常用的子类

    1. 1.FildInputStream:文件输入流
    2. 2.BufferedInputStream:缓冲字节输入流
    3. 3.ObjectInputStream:对象字节输入流
    • InputStream代码案例

      1. // 演示读取文件
      2. @Test
      3. public void readFile01(){
      4. String filePath = "e:\\news1.txt";
      5. int readDate = 0;
      6. FileInputStream fileInputStream = null;
      7. try {
      8. // 创建 FileInputStream 对象,用于读取文件
      9. fileInputStream = new FileInputStream(filePath);
      10. // 从该输入流读取一个字节的数据,如果没有输入可用,此方法将阻止
      11. // 如果返回-1,表示读取完毕
      12. while ((readDate = fileInputStream.read()) != -1){
      13. System.out.print((char) readDate); // 转成char显示
      14. }
      15. } catch (IOException e) {
      16. e.printStackTrace();
      17. }finally {
      18. // 关闭文件流释放资源
      19. try {
      20. fileInputStream.close();
      21. } catch (IOException e) {
      22. e.printStackTrace();
      23. }
      24. }
      25. }
      26. /*
      27. * 使用read(byte[] b)读取文件,提高效率
      28. * */
      29. @Test
      30. public void readFile02(){
      31. String filePath = "e:\\news1.txt";
      32. byte[] buf = new byte[8]; // 一次读取8个字节
      33. int readLen = 0;
      34. FileInputStream fileInputStream = null;
      35. try {
      36. // 创建 FileInputStream 对象,用于读取文件
      37. fileInputStream = new FileInputStream(filePath);
      38. // 从该输入流读取一个字节的数据,如果没有输入可用,此方法将阻止
      39. // 如果返回-1,表示读取完毕
      40. // 如果读取正常,返回实际读取的字节数
      41. while ((readLen = fileInputStream.read(buf)) != -1){
      42. System.out.print(new String(buf, 0, readLen)); // 转成char显示
      43. }
      44. } catch (IOException e) {
      45. e.printStackTrace();
      46. }finally {
      47. // 关闭文件流释放资源
      48. try {
      49. fileInputStream.close();
      50. } catch (IOException e) {
      51. e.printStackTrace();
      52. }
      53. }
      54. }
    • OutputStream代码案例

      1. // 演示使用FileOutputStream将数据写到文件中,如果文件不存在,则创建该文件
      2. @Test
      3. public void writeFile(){
      4. // 创建 FileOutputStream对象
      5. String filePath = "e:\\news1.txt";
      6. FileOutputStream fileOutputStream = null;
      7. try {
      8. /*
      9. 1.fileOutputStream = new FileOutputStream(filePath); 创建方式,当写入内容时,会覆盖原来的文本内容
      10. 2.fileOutputStream = new FileOutputStream(filePath,true); 创建方式,当写入内容时,是追加到文本内容后面
      11. */
      12. fileOutputStream = new FileOutputStream(filePath,true);
      13. // 写入一个字节
      14. // fileOutputStream.write('H');
      15. // 写入一个字符串
      16. String str = "hello,www";
      17. // str.getBytes() 可以把字符串转成字节数组
      18. // fileOutputStream.write(str.getBytes());
      19. // write(str.getBytes(),0,int len) 将len字节从位于偏移量 off的指定字节数组
      20. fileOutputStream.write(str.getBytes(),0,str.length());
      21. } catch (IOException e) {
      22. e.printStackTrace();
      23. }finally {
      24. try {
      25. fileOutputStream.close();
      26. } catch (IOException e) {
      27. e.printStackTrace();
      28. }
      29. }
      30. }
    • 拷贝文件代码

      1. public static void main(String[] args) {
      2. String srcPath = "e:\\1.jpg";
      3. String destPath = "e:\\2.jpg";
      4. FileInputStream fileInputStream = null;
      5. FileOutputStream fileOutputStream = null;
      6. try {
      7. fileInputStream = new FileInputStream(srcPath);
      8. fileOutputStream = new FileOutputStream(destPath);
      9. // 定义一个字节数组,提高读取效果
      10. byte[] buf = new byte[1024];
      11. int readLen = 0;
      12. while ((readLen = fileInputStream.read(buf)) != -1) {
      13. // 读取到后,就写入到文件,通过fileOutputStream
      14. // 即,是一边写一边读
      15. fileOutputStream.write(buf,0,readLen); // 一定要使用这个方法
      16. }
      17. System.out.println("拷贝成功");
      18. } catch (IOException e) {
      19. e.printStackTrace();
      20. } finally {
      21. try {
      22. // 关闭输入流和输出流,释放资源
      23. if (fileInputStream != null) {
      24. fileInputStream.close();
      25. }
      26. if (fileOutputStream != null) {
      27. fileOutputStream.close();
      28. }
      29. } catch (IOException e) {
      30. e.printStackTrace();
      31. }
      32. }
      33. }