Articles of 文件 io

在Phonegap中读取本地文件

我正在尝试读取Phonegap中的本地文件来加载应用程序的语言字符串,我无法使其工作:( 代码非常简单: var pathToLocalFile = “/home/user/android/assets/www/js/”; var langCache = new FileReader(); langCache.onload = function(data){ col = JSON.parse(data); refreshAllStrings(); }; langCache.onerror = function(err){ debug.error(err); }; langCache.readAsText(pathToLocalFile+currentLang+’.json’); 此代码在Ripple仿真器上不起作用,我将其替换为 var pathToLocalFile = “file:///android_asset/www/js/”; 在android的情况下,具有相同的结果: Uncaught TypeError: Object # has no method ‘warning’ cordova-2.4.0.js:2616 initRead cordova-2.4.0.js:2616 FileReader.readAsText cordova-2.4.0.js:2660 loadLanguage 在Ripple模拟器中,我使用google-chrome -–allow-file-access-from-files启动了Chrome google-chrome -–allow-file-access-from-files并且Android配置和清单具有设置的所有权限和插件。 当然我错过了什么,但不知道这可能是什么? 问候。

如何检查两个路径是否在同一个挂载点上?

我需要在android文件系统中将文件从一个目录移动到另一个目录。 如何以编程方式检查两个路径是否在同一个挂载点上? 我想知道这个的原因是因为如果它们是,我们需要复制位而不是使用File.rename(newPath) 。 路径位于不同挂载点时的示例: 用户想要将文件从内部存储器移动到外部存储器。 用户想要将文件从/ sdcard / files移动到samsungdevice上的/ sdcard / external_sd / files。

Android无法使用LibGDX打开文件

我正在编写一个LibGDX游戏,我需要为spritesheet打开一个XML文件。 不幸的是,当我尝试打开文件时,我收到了IOException 。 文件存在于正确的位置,项目已清理并且是最新的等。 这里是踢球者:LibGDX将打开并在同一目录中显示图像文件,实际上将在自己的FileHandle对象中获取XML文件(我已经将logcat的大小与之匹配)。 然而,当我将文件发送到SAX解析器时,我得到一个exception,将我带回文件,说它无法打开它。 这是ClipSprite类中的问题代码行: private void parseConfigFile(FileHandle file) throws ParserConfigurationException, SAXException { //Use a SAX parser to get the data out of the XML file. SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); XMLConfigHandler handler = new XMLConfigHandler(); //Parse through the document try { parser.parse(file.path(),handler); //IOException here } 这是我在主LibGDX类的create方法中选择游戏中文件的代码 //This loads a […]

如何将文件保存到SD卡

我是android和java编程的新手,有人可以告诉我如何保存文件,我有以下代码: InputStream is = new FileInputStream( location + “/zipSample.zip”); ZipInputStream zis = new ZipInputStream(new BufferedInputStream(is)); try { ZipEntry ze; while ((ze = zis.getNextEntry()) != null) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int count; while ((count = zis.read(buffer)) != -1) { baos.write(buffer, 0, count); } String filename = ze.getName(); byte[] bytes […]

如何将Map转换为Bytes并保存到内部存储

如何将Map<Integer, String >转换为byte[] ,然后将其写入内部存储? 我目前有: try { FileOutputStream fos = context.openFileOutput(Const.FILE_CATEGORIES, Context.MODE_PRIVATE); fos.write(null); } catch (FileNotFoundException e) { // reload and create the file again } 但是..我不知道如何将Map转换成正确的格式,然后在我需要再次加载它时将其解码回原始格式。 我需要每周重新创建一次此文件,并在应用程序启动时加载它。

如何在SDCARD目录中创建文件

我想在SDCARD中的目录(未创建)中创建一个文件(未创建)。 怎么做? 谢谢。

从外部存储Android中读取图像/文件

我正在尝试从外部存储加载图像。 我设置权限,我尝试了不同的方式,但没有一个工作。 BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.ARGB_8888; Bitmap bitmap = BitmapFactory.decodeFile(file.toString()); tv.setImageBitmap(bitmap); 和这个, FileInputStream streamIn = new FileInputStream(file); Bitmap bitmap = BitmapFactory.decodeStream(streamIn); tv.setImageBitmap(bitmap); streamIn.close();

Java中的内存映射zip文件

这是我试图解决的问题: 我有大约100个二进制文件(总共158KB,它们的大小大致相同+/- 50%)。 我需要有选择地只解析这些文件中的一些(在最坏的情况下可能是50,在其他情况下只有1到5)。 顺便说一句,这是在Android设备上。 在Java中执行此操作的最快方法是什么? 一种方法是将所有内容组合到一个文件中,然后使用文件搜索来获取每个单独的文件。 这样文件打开只需要调用一次,这通常很慢。 但是,为了知道每个文件的位置,需要在文件的开头有某种表 – 可以使用脚本生成 – 但是文件也需要在表中的索引中命令它们被连接起来,因此文件搜索不需要做太多工作(如果我错了,请纠正我)。 更好的方法是使文件内存映射,然后表不必按顺序排序,因为内存映射文件将具有随机访问(如果我错了,再次纠正我)。 如果使用zip压缩,则创建该表将是不必要的,因为zip压缩已经创建了一个表。 此外,所有文件都不必连接。 我可以压缩目录,然后通过zip文件中的条目访问每个单独的文件。 问题解决了。 除非zip文件没有内存映射,否则读取速度会慢一些,因为系统调用比直接内存访问慢(如果我错了,请纠正我)。 所以我得出结论,最好的解决方案是使用内存映射的zip存档。 但是, ZipFile条目返回一个InputStream来读取条目的内容。 并且MappedByteBuffer需要一个RandomAccessFile ,它将文件名作为输入,而不是InputStream 。 无论如何,内存映射一个zip文件快速读取? 或者是否有一个不同的解决方案来解决这个选择的文件? 谢谢 编辑:我测试了文件的打开,关闭和解析速度这里是我发现的统计数据: Number of Files: 25 (24 for parse because garbage collection interrupted timing) Total Open Time: 72ms Total Close Time: 1ms Total Parse Time: 515ms (这有点偏向Parse,因为Parse缺少一个文件) %Total […]

file.exists()在文件存在时返回false

在我正在处理的Android应用程序中,用户应该能够在SD卡上创建一个新的CSV文件,使用他们在EditText中输入的文本命名。 问题是在使用目录和文件名实例化File之后,file.exists()返回false ,即使该文件确实存在于该位置。 我使用Android文件浏览器和Windows资源管理器浏览了SD卡,文件确实存在。 这是检查文件是否已经存在的正确方法,如果是,我错过了什么,以便在它存在时返回true? String csvname = edittext.getText().toString() + “.csv”; File sdCard = Environment.getExternalStorageDirectory(); //path returns “/mnt/sdcard” File dir = new File (sdCard.getAbsolutePath() + “/Android/data/” + getPackageName() + “/files/”); // path returns “/mnt/sdcard/Android/data/com.phx.license/files” dir.mkdirs(); File file = new File(dir, csvname); //path returns “/mnt/sdcard/Android/data/com.phx.license/files/Test.csv” if(!file.exists()) //WHY DOES IT SAY IT DOESN’T EXIST WHEN IT DOES? […]

从目录中删除超过给定时间的文件

我已经创建了一些文件列表,用于在我的应用程序中打开一次后存储一些属性。 每次打开文件时,这些属性都会更改,因此我将其删除并再次创建。 我已经使用创建了所有文件文件 File file =new File(getExternalFilesDir(null), currentFileId+””); if(file.exists()){ //I store the required attributes here and delete them file.delete(); }else{ file.createNewFile(); } 我想在这里删除所有这些文件超过一周,因为这些存储的属性将不再需要。 这样做的适当方法是什么?