我正在尝试从小型Java应用程序中的Android Studio中读取文件。所以我正在尝试:
File test = new File("C:\\testing\\testFile.dat");
if (test.exists()) {
System.out.println("test exists");
}
else {
System.out.println("test doesn't exist");
}
该文件确实存在,但是会不断报告该文件不存在。通过使用AssetManager
并通过流读取它,我可以解决另一个文件的问题,但是我现在调用的方法需要File
的绝对路径,但是要点空白是拒绝查找文件。
我是在做一些愚蠢的事情,还是在误解某件事?
UPDATE好的,谢谢您的输入,我现在已经解决了问题。首先,我必须将所需的文件上传到虚拟设备的存储中,然后才能获得它的路径。
File test = new File(this.getFilesDir().getAbsolutePath(), "testFile.dat");
但是我现在要调用的方法需要文件的绝对路径
资产是开发计算机上的文件。它们不是设备上的文件。
理想情况下,您切换到一些支持InputStream
或类似选项的库,而不需要文件系统路径。如果不是这样,则始终可以从InputStream
中获取AssetManager
,并使用该副本在您控制的某个文件(例如getCacheDir()
)中复制数据。然后,您可以将该文件的路径传递给此方法。
您可以将此文件放置在android项目内的assets/
文件夹中,并使用以下代码进行访问。
val inputSteam = assets.open("testFile.dat")
或将其放置在res/raw
文件夹中,然后如下所示进行访问。
val inputStream = resources.openRawResource(R.raw.testFile)
我们无法在这样的开发机器上访问文件,因此无法在android设备上使用,因此它会损坏,因此最好将其移动到项目中的某个位置并按上述方式进行访问。