java-文件读取

1.利用递归读取文件

(1)NotifyFolder.java

 1 package com.etc;
 2 import java.io.File;
 3 import java.io.IOException;
 4 import java.util.ArrayList;
 5 
 6 public class NotifyFolder {
 7     
 8     public ArrayList<File> readFolder(String path)throws IOException{
 9         
10         ArrayList<File> fileList=new ArrayList<File>();
11         File file=new File(path);
12         //判断该文件是否为目录
13         if(file.isDirectory()){
14             //定义一个文件数组用于存放文件夹file下面的所有文件
15             File[] files=file.listFiles();
16             for(File file3: files){
17                 //如果这个文件为目录
18                 if(file3.isDirectory()){
19                     //    System.out.println("文件夹路径:"+file3.getAbsolutePath());
20                     //递归读文件夹
21                     readFolder(file3.getAbsolutePath());
22                 }
23                 else
24                     //普通文件则将其放入集合中
25                     fileList.add(file3);
26                 /*//获取文件路径
27                     System.out.println("文件路径:"+file3.getAbsolutePath());*/
28                 //获取文件名
29                 System.out.println("文件名称:"+file3.getName());
30             }
31         }
32         return fileList;
33     }
34 }

2.直接读取某个文件或图片

(2)ReadFile.java

 1 package com.etc;
 2 import java.awt.BorderLayout;
 3 import java.awt.Image;
 4 import java.io.BufferedInputStream;
 5 import java.io.File;
 6 import java.io.FileInputStream;
 7 import java.io.FileNotFoundException;
 8 import java.io.IOException;
 9 import java.io.InputStream;
10 import java.net.URL;
11 import javax.imageio.ImageIO;
12 import javax.swing.ImageIcon;
13 import javax.swing.JFrame;
14 import javax.swing.JLabel;
15 //文本类文件内容读出
16 public class ReadFile {
17     public void readTxtFile(String path) throws IOException{
18         File file=new File(path);
19         //判断文件是否已经存在,若不在则新建文件与之对应
20         if(!file.exists()){
21             file.createNewFile();
22         }
23         try {
24             //获取源文件
25             FileInputStream fi=new FileInputStream(file);
26             //定义缓冲区,缓冲区大小与获取的文件大小一致,同时以byte数组存放防止出现乱码的情况
27             byte[] by=new byte[fi.available()];
28             fi.read(by);
29             //关闭资源
30             fi.close();
31             //以字符串的形式打印出文件中的所有内容
32             System.out.println(new String(by));
33         } catch (FileNotFoundException e) {
34 
35             e.printStackTrace();
36         } 
37     }
38     //图片内容读取并打印
39     public void readImageFile(){
40         Image image = null;
41         try {
42             //从本地文件读取
43             File sourceimage = new File("E:/timg.jpg");
44             image = ImageIO.read(sourceimage);
45 
46             //从输入流读取
47             InputStream is = new BufferedInputStream(
48                     new FileInputStream("E:/timg.jpg"));  
49             image = ImageIO.read(is);
50 
51             /*//从网上获取图片内容写入image中然后读取出来
52             URL url = new URL("http://www.javaworld.com/images/012407-tipsbox.jpg");
53             image = ImageIO.read(url);*/
54 
55         } 
56         catch (IOException e) {
57 
58         }
59 
60         //用一个窗口打印图片内容
61         JFrame frame = new JFrame();
62         JLabel label = new JLabel(new ImageIcon(image));
63         frame.getContentPane().add(label, BorderLayout.CENTER);
64         frame.pack();
65         frame.setVisible(true); 
66         //关闭窗口--退出调试
67         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
68     }
69 
70 }

3.测试类

 1 package com.etc;
 2 import java.io.IOException;
 3 
 4 public class Test {
 5     //测试类,测试输入文件源
 6     public static void main(String[] args) {
 7         NotifyFolder nf=new NotifyFolder ();
 8         try {
 9             nf.readFolder("F:/QQ");
10         } catch (IOException e1) {
11             e1.printStackTrace();
12         }
13         System.out.println("***************************");
14         ReadFile rd=new ReadFile();
15         try {
16             rd.readTxtFile("F:/test.java");
17             rd.readImageFile();
18         } catch (IOException e) {
19             e.printStackTrace();
20         }
21 
22     }
23 
24 }

效果截图:

原文地址:https://www.cnblogs.com/weekstart/p/10773645.html