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 }
效果截图: