Java之IO输入输出

Posted 天再高,踮起脚尖就能更接近阳光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java之IO输入输出相关的知识,希望对你有一定的参考价值。

 

首先介绍File类:

我们直接上代码:

 1 package com.learn.chap10.sec02;
 2 
 3 import java.io.File;
 4 import java.io.IOException;
 5 
 6 /**
 7  * 测试创建目录和文件
 8  * @author Administrator
 9  *
10  */
11 public class TestFile {
12     public static void main(String[] args) throws IOException {
13         File file=new File("E://java创建目录");
14         boolean b = file.mkdir();
15         if(b){
16             System.out.println("创建目录成功!");
17             file=new File("E://java创建目录//test.txt");
18             boolean m = file.createNewFile();
19             if(m){
20                 System.out.println("创建文件成功!");
21             }else{
22                 System.out.println("创建文件失败!");
23             }
24         }else {
25             System.out.println("创建目录失败!");
26         }
27     }
28 }
 1 package com.learn.chap10.sec02;
 2 
 3 import java.io.File;
 4 
 5 public class TestFile1 {
 6     public static void main(String[] args) {
 7         File file = new File("E://java创建目录//test.txt");
 8         if(file.exists()){ // 假如文件存在
 9             boolean a = file.delete(); // 删除文件
10             if(a){
11                 System.out.println("文件删除成功!");
12             }else {
13                 System.out.println("文件删除失败!");
14             }
15         }
16         
17         file = new File("E://java创建目录");
18         if(file.exists()){ // 假如目录存在
19             boolean m = file.delete(); // 删除目录(注意:delete只能删除空目录)
20             if(m){
21                 System.out.println("目录删除成功!");
22             }else {
23                 System.out.println("目录删除失败!");
24             }
25         }
26         
27     }
28 }
 1 package com.learn.chap10.sec02;
 2 
 3 import java.io.File;
 4 
 5 public class TestFile2 {
 6     public static void listFile(File file){
 7         if(file != null){
 8             if(file.isDirectory()){
 9                 File[] a = file.listFiles(); // 遍历目录
10                 if(a != null){
11                     for (int i = 0; i < a.length; i++) {
12                         listFile(a[i]); // 递归调用
13                     }
14                 }
15             }else {
16                 System.out.println(file);
17             }
18         }
19     }
20     
21     public static void main(String[] args) {
22         listFile(new File("E://mywamp//apache//conf//original"));
23     }
24 }

再介绍字节流:

上下代码:

 1 package com.learn.chap10.sec03;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 
 6 import java.io.InputStream;
 7 /**
 8  * 字节流---文件输入流测试(流入内存:从磁盘读取至内存)
 9  * 输入、输出是针对内存 (举例: 输入流 即数据从硬盘流向内存,也可说是从硬盘读取数据至内存)
10  * 读取、写入是针对磁盘
11  * @author Administrator
12  *
13  */
14 public class Demo1 {
15     public static void main(String[] args) throws Exception {
16         File file=new File("E://测试文件.txt");
17         InputStream inputStream = new FileInputStream(file);
18         InputStream inputStream1 = new FileInputStream(file);
19         InputStream inputStream2 = new FileInputStream(file);
20         // 读取数据方法一
21         byte[] b=new byte[1024];
22         inputStream.read(b);
23         
24         // 读取数据方法二
25         int fileLength1 = (int)file.length();
26         byte[] b1=new byte[fileLength1];
27         inputStream1.read(b1);
28         
29         // 读取数据方法三
30         int fileLength = (int)file.length();
31         byte[] m=new byte[fileLength];
32         int temp =0;
33         int len=0;
34         while((temp=inputStream2.read()) != -1){
35             m[len++] = (byte)temp;
36         }
37         
38         
39         inputStream.close(); // 关闭输入流
40         inputStream1.close(); // 关闭输入流
41         inputStream2.close(); // 关闭输入流
42         System.out.println("读取的内容为:"+new String(b));
43         System.out.println("读取的内容为:"+new String(b1));
44         System.out.println("读取的内容为:"+new String(m));
45     }


46 }





1
package com.learn.chap10.sec03; 2 3 import java.io.File; 4 import java.io.FileOutputStream; 5 import java.io.OutputStream; 6 /** 7 * 字节流---文件输出流测试 8 * @author Administrator 9 * 10 */ 11 public class Demo2 { 12 public static void main(String[] args) throws Exception { 13 File file=new File("E://测试文件.txt"); 14 OutputStream out = new FileOutputStream(file,true);// 加true 表示追加 15 String string="呵呵呵呵12"; 16 byte[] b=string.getBytes(); 17 out.write(b); 18 out.close(); 19 } 20 }

 

 

 1 package com.learn.chap10.sec03;
 2 
 3 import java.io.BufferedInputStream;
 4 import java.io.BufferedOutputStream;
 5 import java.io.FileInputStream;
 6 import java.io.FileOutputStream;
 7 import java.io.InputStream;
 8 import java.io.OutputStream;
 9 
10 /**
11  * 字节流---缓冲流和非缓冲流比较
12  * @author Administrator
13  *
14  */
15 public class Demo3 {
16     /**
17      * 非缓存
18      * @throws Exception
19      */
20     public static void stream() throws Exception{
21         InputStream inputStream=new FileInputStream("E://测试文件1.txt");
22         OutputStream outputStream=new FileOutputStream("E://测试文件2.txt");
23         int b=0;
24         long start_time = System.currentTimeMillis(); // 开始时间
25         while((b=inputStream.read()) != -1){
26             outputStream.write(b);
27         }
28         inputStream.close();
29         outputStream.close();
30         long end_time = System.currentTimeMillis(); // 结束时间
31         System.out.println("非缓存花费时间:"+(end_time-start_time));
32         
33     }
34     
35     /**
36      * 缓冲流  节省时间  性能优
37      * @throws Exception
38      */
39     public static void buffer_stream() throws Exception {
40         // 定义了一个带缓冲的字节输入流
41         BufferedInputStream bInputStream = new BufferedInputStream(new FileInputStream("E://测试文件1.txt"));
42         // 定义了一个带缓冲的字节输出流
43         BufferedOutputStream bOutputStream = new BufferedOutputStream(new FileOutputStream("E://测试文件2.txt"));
44         int b=0;
45         long start_time = System.currentTimeMillis(); // 开始时间
46         while((b=bInputStream.read()) != -1){
47             bOutputStream.write(b);
48         }
49         bInputStream.close();
50         bOutputStream.close();
51         long end_time = System.currentTimeMillis(); // 结束时间
52         System.out.println("缓存花费时间:"+(end_time-start_time));
53     }
54     
55     public static void main(String[] args) throws Exception {
56         stream();
57         buffer_stream();
58     }
59 }

 

再介绍下字符流:

上下代码:

 1 package com.learn.chap10.sec04;
 2 
 3 import java.io.File;
 4 import java.io.FileReader;
 5 import java.io.Reader;
 6 /**
 7  * 字符流----输入流
 8  * @author Administrator
 9  *
10  */
11 public class Demo1 {
12     public static void main(String[] args) throws Exception {
13         File file=new File("E://测试文件1.txt");
14         Reader reader=new FileReader(file);
15         char[] c=new char[1024]; // 字符数组
16         // 方法一
17         int len=reader.read(c);
18         
19         // 方法二
20         /*int temp=0;
21         int len=0;
22         while((temp=reader.read()) != -1){
23             c[len++] = (char)temp;
24         }*/
25         reader.close();
26         System.out.println("读取内容是:"+new String(c,0,len));
27         
28     }
29 }

运行结果:

读取内容是:gffdhgfhgjhgjhgjhk
kukhjkhjk gfhfghgjhjhkjhkjhkjhkjhkj

 

 1 package com.learn.chap10.sec04;
 2 
 3 import java.io.File;
 4 import java.io.FileWriter;
 5 import java.io.Writer;
 6 /**
 7  * 字符流----输出流
 8  * @author Administrator
 9  *
10  */
11 public class Demo2 {
12     public static void main(String[] args) throws Exception {
13         File file=new File("E://测试文件1.txt");
14         Writer outWriter = new FileWriter(file,true);
15         String string="adffdsf";
16         outWriter.write(string); // 将字符串写入输出流
17         outWriter.close(); // 关闭数据流
18     }
19 }

 










以上是关于Java之IO输入输出的主要内容,如果未能解决你的问题,请参考以下文章

练习-Java输入输出之字节缓冲IO流之字节缓存流的高性能

练习-Java输入输出之字节缓冲IO流之字节缓存流的高性能

java开发知识IO知识之输入输出流以及文件

IO流之字符输入流,字符输出流

学习-Java输入输出之字符缓冲IO流之往文件中插入分隔符

Java编程基础之IO流