我需要从文件夹(文件)中的每个文件提取字符串部分,其扩展名如下:png,jpg,jpeg,png,jpg,jpeg。文件命名约定如下(这是两个不同的文件,但它们唯一的共同点是获取文件名所需的时间戳:
airlineCode_partnerCode_invoiceNO_timestamp.fileType fileName.fileType_timestamp
文件名示例:
ET_PRH_4_20170309140404.PNG
Gosalyn.PNG_20170309140404
读取第一个字段后,我需要将每个大写字段写入数据库(例如AIRLINECODE、PARTNERCODE写入db中的列)。下面是我到目前为止写的代码,所以你能好心地指导我如何从这里开始。非常感谢您的帮助。我只需要帮助拆分和储存部分。谢谢
import java.io.File;
import java.io.FilenameFilter;
public class Pathnames {
public void readFilename() {
// try-catch block to handle exceptions
try {
File f = new File("C:\\Users\\rsaeed\\Desktop\\files");
FilenameFilter filter = new FilenameFilter() {
@Override
public boolean accept(File f, String name) {
return name.endsWith(".png") || name.endsWith(".PNG") || name.endsWith(".jpg") || name.endsWith(".JPG") || name.endsWith(".jpeg") || name.endsWith(".JPEG");
}
};
// using a File class as an array
File[] files = f.listFiles(filter);
if(files != null) {
for(File eachFile : files) {
String[] partsOfName = eachFile.split("_"); // this part is wrong. I am stuck here
}
}
// Get the names of the files by using the .getName() method
for (int i = 0; i < files.length; i++) {
System.out.println(files[i].getName());
}
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
public static void main(String args[]) {
Pathnames p = new Pathnames();
p.readFilename();
}
}
您需要在文件名上调用split
方法,而不是在file
对象上调用。
拆分时,请使用_
和.
,这样文件扩展名也会分开:
String fileName = "ET_PRH_4_20170309140404.png";
String[] parts = fileName.split("_|\\.");
System.out.println(Arrays.toString(parts));
输出:
[ET, PRH, 4, 20170309140404, png]
现在,您可以轻松地从数组中获取部分。
有关模式的更多信息,请参阅模式类文档。
问题内容: 在Java中执行以下操作的最佳方法是什么。我有两个输入字符串 我需要从字符串中提取类型和数字。 在这种情况下,答案是type =“ a good”和number =“ 234” 谢谢 问题答案: 您可以使用正则表达式:
问题内容: 提取像这样的字符串的整数部分的最佳方法是什么 您如何获得123部分。您可以使用Java的Scanner对其进行破解,还有更好的方法吗? 问题答案: 为什么不只使用正则表达式来匹配所需的字符串部分? 这就是您所需要的,再加上所有需要的字符。 查看http://www.regular-expressions.info/tutorial.html,了解正则表达式的工作原理。 编辑:我想说的是
问题内容: 您如何解析存储在Java字符串对象中的xml? Java的XMLReader仅从URI或输入流中解析XML文档。无法从包含xml数据的字符串进行解析? 现在,我有以下内容: 在我的处理程序上,我有这个: 提前致谢 问题答案: 该SAXParser的可以读取的的InputSource。 一个 InputSource的 可以采取 读者 在其构造 因此,您可以通过StringReader来解
问题内容: 我想解决以下条件字符串。因为我想在我的项目中支持动态条件。 我期望的程序是 更新: 我不尝试解析数学方程式,如下所示 问题答案: 从Java 1.6开始,如果您足够使用和/或不想引入其他库,则可以使用and评估 javascript 。 输出量
问题内容: 我有以下字符串; 等级,用户名和消息的字符每次都不同。将其分为三个独立变量(用户名,等级和消息)的最佳方法是什么? 我已经尝试过: 但这会抛出错误。提前致谢! 问题答案: 使用Java对正则表达式()的支持,并让正则表达式匹配这三个部分。 例如这个: Java代码段,略微改编自Ian F. Darwin的“ Java Cookbook”(O’Reilly): 输出:
问题内容: 我有一个Java 对象。我只需要从中提取数字。我举一个例子: 我想要 是否有仅提取数字的库函数? 感谢你的回答。在尝试这些库之前,我需要知道是否必须安装任何其他库? 问题答案: 你可以使用正则表达式并删除非数字。