背景
对于我正在编写的程序,我需要能够从文件中读取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:\Users
或Here!
。但是,如果我从文件路径中删除“用户”,它可以正常工作并打印它应该的所有内容。它甚至将C:\
识别为目录。
问题
我不希望用户被迫以特殊格式编写文件路径,因为我的程序无法处理它。那么我该如何解决这个问题?
答案 0 :(得分:1)
输入line.indexOf("User") != -1
的第一个条件true
为User test
,LocalFile C:\User
的第一个条件User
(对于包含else if
的每个路径都是如此) 。因此,不评估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);
}
}
条件。
{{1}}