Java 我想从数组中找到一个值
以下是我的java代码:Java 我想从数组中找到一个值,java,arrays,Java,Arrays,以下是我的java代码: import java.io.File; import java.util.Arrays; public class mainClass { public static void main(String... args) { File[] files = new File("%appdata%").listFiles(); showFiles(files); System.out.println( Arra
import java.io.File;
import java.util.Arrays;
public class mainClass {
public static void main(String... args) {
File[] files = new File("%appdata%").listFiles();
showFiles(files);
System.out.println( Arrays.toString( files ) );
if (Arrays.asList(files).contains(".minecraft")) {
System.out.println("Success!");
}
}
public static void showFiles(File[] files) {
}
}
我需要上面的代码来检查%appdata%中是否存在.minecraft文件夹。我对Java完全不感兴趣。我曾经使用过PHP,但似乎对我没有帮助:)请帮帮我,这让我很恼火
-Simon如果您只想查找“.minecraft”文件,则更容易:
File appdata = new File("%appdata%");
File minecraft = new File(appdata, ".minecraft");
if (minecraft.exists()) {
System.out.println("Success");
}
编辑:根据评论,(我主要是linux爱好者),您需要使用正确的
%APPDATA%
位置:问题在于.minecraft
是一个隐藏文件夹。您需要按如下方式访问文件夹:
File directory = new File("%appdata%");
File[] hiddenFiles = directory.listFiles((FileFilter) HiddenFileFilter.HIDDEN);
for (File hiddenFile: hiddenFiles) {
System.out.println("hidden file: " + hiddenFile.getCanonicalPath());
}
正如rolfl提到的,有一种更好的方法来查找单个文件 也就是说,您的代码没有执行正确的检查。您正在创建
文件
对象的数组,将数组转换为列表
,然后检查列表中的字符串
值。字符串
值永远不会与文件
对象匹配
如果您想查找单个文件,请使用rolfl的答案。如果您想专门修复代码,请从以下几点开始:
- 您需要遍历文件列表。通过转换为
,您获得了什么列表
- 您需要找到将
名称与文件的
名称匹配的方法。您可以调用字符串
对象的什么方法来获取其名称文件
- 您需要对
名称和文件的
进行“.minecraft”
字符串比较。这种比较可能是什么样的
请注意:参考L.Butz答案;我没有访问Java中的隐藏文件,因此可能需要额外的步骤才能访问这些文件。
%appdata%
是一个环境变量,因此它不会被自动解析。因此,您需要在列出它之前解决它。这是通过使用
从教程开始。请不要给那个些到目前为止已经展示了他所做的事情的人投反对票。这是我的新代码:
public class mainClass{File appdata=new File(System.getenv(“appdata”);File minecraft=new File(appdata,.minecraft”);if(minecraft.exists(){System.out.println(“Success”);}
但它给了我这个错误:*错误:在类mainClass中找不到Main方法,请将Main方法定义为:public static void Main(字符串[]args)**
@Test
public void dirExistsInAppData() {
Assert.assertTrue(dirExistsInAppData(".minecraft"));
}
private boolean dirExistsInAppData(final String dirname) {
File dir = new File(System.getenv("APPDATA"), dirname);
return dir.exists() && dir.isDirectory();
}