gpt4 book ai didi

java - 在Java中从文件中读取windows文件名

转载 作者:行者123 更新时间:2023-12-01 11:52:39 25 4
gpt4 key购买 nike

背景

对于我正在编写的程序,我需要能够从文件中读取 Windows 文件名。不幸的是,Windows 使用 \ 而不是 /,这使得这变得很棘手。我一直在尝试不同的方法,但似乎从来没有奏效。 Java 代码如下:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Test {
static String localFile;
static String localFilePrefix;
static String user;

public static void main(String[] args){
readConfig("user.txt");
}

public static boolean readConfig(String cfgFilePath){
try{
BufferedReader reader = new BufferedReader(new FileReader(cfgFilePath));
try{
String line;
while((line = reader.readLine()) != null){
if(line.indexOf("User") != -1){
user = line.substring(line.indexOf(" ")+1);
}else if(line.indexOf("LocalFile") != -1){
String tmp = line.substring(line.indexOf(" ")+1);
System.out.println("Test: " + tmp);
setLocalFile(tmp);
}
}
}catch(IOException ee){
System.err.println(ee.getMessage());
}
}catch(FileNotFoundException e){
System.err.println(e.getMessage());
}
return true;
}

public static void setLocalFile(String lFileName){
System.out.println("FileName: " + lFileName);
localFile = lFileName;
if(new File(localFile).isDirectory()){
System.out.println("Here!");
localFilePrefix=localFile+File.separator;
}
}
}

这是配置文件:

User test
LocalFile C:\User

使用该文件路径运行此代码不会打印它应该打印的 Test: C:\Users 。它也不打印 FileName: C:\UsersHere!。但是,如果我从文件路径中删除“用户”,它就可以正常工作并打印它应该打印的所有内容。它甚至将 C:\ 识别为目录。

问题

我不希望用户仅仅因为我的程序无法处理而被迫以特殊格式写入文件路径。那么我该如何解决这个问题呢?

最佳答案

您的第一个条件line.indexOf("User") != -1true输入User test也适用于LocalFile C:\User (对于包含 User 的每个路径都是如此)。因此,else if未评估条件。

使用 .startsWith 而不是 .indexOf

while ((line = reader.readLine()) != null) {
if (line.startsWith("User")) {
user = line.substring(line.indexOf(" ") + 1);
} else if (line.startsWith("LocalFile")) {
String tmp = line.substring(line.indexOf(" ") + 1);
System.out.println("Test: " + tmp);
setLocalFile(tmp);
}
}

关于java - 在Java中从文件中读取windows文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28677267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com