在Java中,读取各种文件格式如Excel(.xlsx)、Word(.docx)、PDF(.pdf)和文本文件(.txt)常常是开发者需要实现的功能。本文将介绍如何使用Java中的一些流行库来读取这些文件的内容,提供一个“万能方法”。
1. 读取 Excel 文件
对于Excel文件,我们通常使用Apache POI库。Apache POI支持Excel 2003(.xls)和Excel 2007及更新版本(.xlsx)两种格式。
示例代码:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class ExcelReader {
public static void readExcel(String filePath) throws IOException {
FileInputStream fis = new FileInputStream(new File(filePath));
Workbook workbook = new XSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(0); // 获取第一个表单
for (Row row : sheet) {
for (Cell cell : row) {
switch (cell.getCellType()) {
case STRING:
System.out.print(cell.getStringCellValue() + "\t");
break;
case NUMERIC:
System.out.print(cell.getNumericCellValue() + "\t");
break;
case BOOLEAN:
System.out.print(cell.getBooleanCellValue() + "\t");
break;
default:
System.out.print("Unsupported cell type\t");
}
}
System.out.println();
}
workbook.close();
fis.close();
}
}
2. 读取 Word 文件
要读取Word文档,可以使用Apache POI的HWPF和XWPF库。
示例代码:
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import java.io.FileInputStream;
import java.io.IOException;
public class WordReader {
public static void readWord(String filePath) throws IOException {
FileInputStream fis = new FileInputStream(filePath);
XWPFDocument document = new XWPFDocument(fis);
for (XWPFParagraph paragraph : document.getParagraphs()) {
System.out.println(paragraph.getText());
}
document.close();
fis.close();
}
}
3. 读取 PDF 文件
PDF文件可以使用PDFBox库来读取。
示例代码:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import java.io.File;
import java.io.IOException;
public class PDFReader {
public static void readPDF(String filePath) throws IOException {
PDDocument document = PDDocument.load(new File(filePath));
PDFTextStripper pdfStripper = new PDFTextStripper();
String text = pdfStripper.getText(document);
System.out.println(text);
document.close();
}
}
4. 读取文本文件
对于文本文件,可以使用Java自带的BufferedReader
。
示例代码:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class TextReader {
public static void readText(String filePath) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(filePath));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
}
}
5. 万能读取方法
我们可以创建一个万能方法,根据文件的扩展名来调用相应的读取方法。
示例代码:
public class UniversalFileReader {
public static void readFile(String filePath) {
try {
if (filePath.endsWith(".xlsx") || filePath.endsWith(".xls")) {
ExcelReader.readExcel(filePath);
} else if (filePath.endsWith(".docx") || filePath.endsWith(".doc")) {
WordReader.readWord(filePath);
} else if (filePath.endsWith(".pdf")) {
PDFReader.readPDF(filePath);
} else if (filePath.endsWith(".txt")) {
TextReader.readText(filePath);
} else {
System.out.println("不支持的文件类型");
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String filePath = "your_file_path_here"; // 这里替换成你的文件路径
readFile(filePath);
}
}
总结
通过以上几段代码,我们实现了使用Java读取Excel、Word、PDF和文本文件的功能。这些示例展示了如何利用Apache POI和PDFBox等库来高效地处理不同格式的文件,为日常开发提供了便利。希望本文能够帮助开发者在项目中更轻松地处理文件操作。