gpt4 book ai didi

java - 如何根据操作系统更改文件路径

转载 作者:IT王子 更新时间:2023-10-29 01:04:41 25 4
gpt4 key购买 nike

我有一个类可以读取特定位置可用的列表,

下面是我的代码,

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ExceptionInFileHandling {

@SuppressWarnings({ "rawtypes", "unchecked" })
public static void GetDirectory(String a_Path, List a_files, List a_folders) throws IOException {
try {
File l_Directory = new File(a_Path);
File[] l_files = l_Directory.listFiles();

for (int c = 0; c < l_files.length; c++) {
if (l_files[c].isDirectory()) {
a_folders.add(l_files[c].getName());
} else {
a_files.add(l_files[c].getName());
}
}
} catch (Exception ex){
ex.printStackTrace();
}

}
@SuppressWarnings("rawtypes")
public static void main(String args[]) throws IOException {

String filesLocation = "asdfasdf/sdfsdf/";
List l_Files = new ArrayList(), l_Folders = new ArrayList();
GetDirectory(filesLocation, l_Files, l_Folders);

System.out.println("Files");
System.out.println("---------------------------");
for (Object file : l_Files) {
System.out.println(file);
}
System.out.println("Done");

}
}

在此文件路径可以作为参数传递,应根据操作系统采用,

filePath.replaceAll("\\\\|/", "\\" + System.getProperty("file.separator"))

这是正确的吗?

最佳答案

有更好的方法来使用文件路径...

// Don't do this
filePath.replaceAll("\\\\|/", "\\" + System.getProperty("file.separator"))

使用java.nio.file.path :

import java.nio.file.*;

Path path = Paths.get(somePathString);
// Here is your system independent path
path.toAbsolutePath();
// Or this works too
Paths.get(somePathString).toAbsolutePath();

使用File.seperator :

// You can also input a String that has a proper file seperator like so
String filePath = "SomeDirectory" + File.separator;
// Then call your directory method
try{
ExceptionInFileHandling.GetDirectory(filePath, ..., ...);
} catch (Exception e){}

所以对你的方法做一个简单的改变现在就可以跨平台工作了:

@SuppressWarnings({ "rawtypes", "unchecked" })
public static void GetDirectory(String a_Path, List a_files, List a_folders) throws IOException {
try {
// File object is instead constructed
// with a URI by using Path.toUri()
// Change is done here
File l_Directory = new File(Paths.get(a_Path).toUri());

File[] l_files = l_Directory.listFiles();
for (int c = 0; c < l_files.length; c++) {
if (l_files[c].isDirectory()) {
a_folders.add(l_files[c].getName());
} else {
a_files.add(l_files[c].getName());
}
}
} catch (Exception ex){
ex.printStackTrace();
}

}

关于java - 如何根据操作系统更改文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26990712/

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