如何修复 content.Equals 的错误输出?
How to fix wrong output of content.Equals?
我试图让 Java 读取目录中的所有文件并将文件名与字符串列表进行比较,如果文件名与列表中的字符串相同,则应输出文件名 + "hit"。现在我只命中了一个文件。
命中的文件夹包含:
foto5.jpeg
yH1laMN0s7g.jpeg
RdrzTHAvcQg.jpeg
列表lijst.txt包含:
foto5.jpeg
yH1laMN0s7g.jpeg
RdrzTHAvcQg.jpeg
所以我应该得到:
foto5 命中!
RdrzTHAvcQg 命中!
yH1laMN0s7g 命中!
但我现在得到的是:
照片5 *
RdrzTHAvcQg 命中!
yH1laMN0s7g *
我试过编码,现在是 UTF-8。但我不认为这是问题所在。
public static void main(String[] args) {
// TODO Auto-generated method stub
String hit = ""; // empty string
File files = new File("C:\Users\bram\Pictures\hit");
File[] sourceFiles = files.listFiles(); // the files in the map hit java reads
List<String> lines = new ArrayList<String>();
try {
lines = FileUtils.readLines(new File("C:\lijst.txt"), "utf-8");
} catch (IOException e2) {
} // java reads strings in the list
for (File x: sourceFiles) { // java iterates through all the files in the folder hits.
String names = x.getName().replaceAll("\.[^.]*$", "").toString();
// java gets the filenames and converts them to strings without the extension
for (String a : lines) // for all strings in the list:
{
//System.out.println(a);
if(names.contentEquals(a)) // if the name is equel to one of the strings in the list it generates a hit
{
hit = "Hit!";
}else {
hit = "*"; // no hit is *
}
}
System.out.println(x.getName().replaceAll("\.[^.]*$", "").toString() +" "+ hit); // print the results
}
}
}
你把事情复杂化了。尽管您的 txt 文件包含图像文件的全名,但为什么要删除文件扩展名?为什么要嵌套 for 循环?像下面这样的东西还不够吗?
for (File x : sourceFiles) {
if(lines.contains(x.getName())){
System.out.println(x.getName()+"\t Hit!");
}
else{
System.out.println(x.getName()+"\t *");
}
}
好吧,对不起大家..这是漫长的一天。带有字符串的列表不包含任何扩展名。我这边的信息有误,抱歉。
我现在可以正常工作了,只需在 for 循环中进行一个简单的中断即可。感谢您的回复!
for (String a : lines) // for all strings in the list:
{
//System.out.println(a);
if(names.contentEquals(a))
{
hit = "Hit!";
break;
}else {
hit = "*"; // no hit is *
}
}
我试图让 Java 读取目录中的所有文件并将文件名与字符串列表进行比较,如果文件名与列表中的字符串相同,则应输出文件名 + "hit"。现在我只命中了一个文件。
命中的文件夹包含: foto5.jpeg yH1laMN0s7g.jpeg RdrzTHAvcQg.jpeg
列表lijst.txt包含: foto5.jpeg yH1laMN0s7g.jpeg RdrzTHAvcQg.jpeg
所以我应该得到: foto5 命中! RdrzTHAvcQg 命中! yH1laMN0s7g 命中!
但我现在得到的是: 照片5 * RdrzTHAvcQg 命中! yH1laMN0s7g *
我试过编码,现在是 UTF-8。但我不认为这是问题所在。
public static void main(String[] args) {
// TODO Auto-generated method stub
String hit = ""; // empty string
File files = new File("C:\Users\bram\Pictures\hit");
File[] sourceFiles = files.listFiles(); // the files in the map hit java reads
List<String> lines = new ArrayList<String>();
try {
lines = FileUtils.readLines(new File("C:\lijst.txt"), "utf-8");
} catch (IOException e2) {
} // java reads strings in the list
for (File x: sourceFiles) { // java iterates through all the files in the folder hits.
String names = x.getName().replaceAll("\.[^.]*$", "").toString();
// java gets the filenames and converts them to strings without the extension
for (String a : lines) // for all strings in the list:
{
//System.out.println(a);
if(names.contentEquals(a)) // if the name is equel to one of the strings in the list it generates a hit
{
hit = "Hit!";
}else {
hit = "*"; // no hit is *
}
}
System.out.println(x.getName().replaceAll("\.[^.]*$", "").toString() +" "+ hit); // print the results
}
}
}
你把事情复杂化了。尽管您的 txt 文件包含图像文件的全名,但为什么要删除文件扩展名?为什么要嵌套 for 循环?像下面这样的东西还不够吗?
for (File x : sourceFiles) {
if(lines.contains(x.getName())){
System.out.println(x.getName()+"\t Hit!");
}
else{
System.out.println(x.getName()+"\t *");
}
}
好吧,对不起大家..这是漫长的一天。带有字符串的列表不包含任何扩展名。我这边的信息有误,抱歉。
我现在可以正常工作了,只需在 for 循环中进行一个简单的中断即可。感谢您的回复!
for (String a : lines) // for all strings in the list:
{
//System.out.println(a);
if(names.contentEquals(a))
{
hit = "Hit!";
break;
}else {
hit = "*"; // no hit is *
}
}