【开源java游戏框架libgdx专题】-07-文件处理
- Desktop(Windows,Linux,Mac OS X等等):在桌面系统中,文件系统是一个大块的内存。文件可以通过当前的工作目录或者绝对路径被引用。可以忽略相关权限,文件和目录通常可以被所有的程序读写。
- Android:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
- iOS:在iOS中所有文件类型暂不可用。
- Javascript或WebGL:
- 在Libgdx中的文件代表了一个FileHandle类的实例,一个FileHandle有一个指定了文件存储位置的类型。
| Type | Descrption | Desktop | Android | HTML5 | ios |
| Classpath | read-only | Yes | Yes | NO | Yes |
| Internal | read-only | Yes | Yes | Yes | Yes |
| Local | read-write | Yes | Yes | No | Yes |
| External | read-write | Yes | Yes | No | Yes |
| Absolute | 绝对路径,尽量少用 | Yes | Yes | No | Yes |
- 对于绝对路径和Classpath,通常用于桌面程序的路径,使用顺序应该像下面这样:
- Internal Files:与程序一起打包的所有 assets 下的文件都是内部文件(Internal Files)
- Local Files :如果您需要写一些小文件,如游戏的状态,使用 local Files.这些都是一般私有到应用程序中。
- External Files:如果你想写一些大文件,例如截图或者下载好的文件,可以存储到External Files,应该注意的是,外部文件是不稳定的,用户可以删除或者移动你写出的文件。
- 检查存储可用性和路径
- 你可以通过一下文件模型查询可用信息:
boolean isExtAvailable =Gdx.files.isExternalStorageAvailable(); boolean isLocAvailable =Gdx.files.isLocalStorageAvailable();
- 还可以像这样查询文件的根路径:
String extRoot =Gdx.files.getExternalStoragePath(); String locRoot =Gdx.files.getLocalStoragePath();
- 获取文件句柄
FileHandle handle =Gdx.files.internal("data/myfile.txt"); FileHandle handle =Gdx.files.classpath("myfile.txt");//将位于项目目录下 FileHandle handle =Gdx.files.external("myfile.txt");//位于用户home目录,windows C:\User linux macos /user/<user>/myfile.txt FileHandle handle =Gdx.files.absolute("/some_dir/subdir/myfile.txt");//获取绝对路径的文件
- 检查文件存在、检查是否是目录:
boolean exists =Gdx.files.external("doitexist.txt").exists(); boolean isDirectory =Gdx.files.external("test/").isDirectory();
- 列出文件目录也是非常简单
FileHandle[] files =Gdx.files.local("mylocaldir/").list(); for(FileHandle file: files) { // do something interesting here }
- 我们还可以同过文件获取父文件或子文件的句柄
FileHandle parent =Gdx.files.internal("data/graphics/myimage.png").parent(); FileHandle child =Gdx.files.internal("data/sounds/").child("myaudiofile.mp3");
- 从文件中读取内容:
FileHandle file =Gdx.files.internal("myfile.txt");
String text = file.readString();
//获取二进制数据
FileHandle file =Gdx.files.internal("myblob.bin");
byte[] bytes = file.readBytes();
- 写内容到文件中
FileHandle file =Gdx.files.local("myfile.txt"); file.writeString("My god, it's full of stars", false); //二进制文件 FileHandle file =Gdx.files.local("myblob.bin"); file.writeBytes(newbyte[] { 20, 3, -2, 10 }, false);
- 删除、复制、重命名和移动文件/目录
FileHandle from =Gdx.files.internal("myresource.txt"); from.copyTo(Gdx.files.external("myexternalcopy.txt")); Gdx.files.external("myexternalcopy.txt").rename("mycopy.txt"); Gdx.files.external("mycopy.txt").moveTo(Gdx.files.local("mylocalcopy.txt")); Gdx.files.local("mylocalcopy.txt").delete();原文由博主 乐智 编辑撰写,版权归博主所有。
原文地址 http://www.dtblog.cn/1134.html 转载请注明出处!
【开源java游戏框架libgdx专题】-07-文件处理的更多相关文章
- 【开源java游戏框架libgdx专题】-01-libgdx介绍
libgdx是一款开源的java游戏框架,而且还实现了Desktop/Android/BlackBerry/iOS/HTML5这些些平台的跨平台开发.官方网址:https://libgdx.badlo ...
- 【开源java游戏框架libgdx专题】-05-模块描述与上下文
模块描述(Modules overview) Input:为所有的平台提供一个统一的输入模型和处理程序. 获取触摸示例: if (Gdx.input.isTouched()) { System.out ...
- 【开源java游戏框架libgdx专题】-08-中文显示与绘制
libgdx虽然是由美国人Mario Zechner(即BadlogicGames)写的开源引擎,由于Libgdx底层是用OpenGL实现的,所以Libgdx是可以支持中文的,在libgdx中的汉字都 ...
- 【开源java游戏框架libgdx专题】-14-系统控件-Skin类
Skin类主要用于存储用户界面的资源,该资源主要用于窗口部件.这些资源也包括纹理图片.位图画笔.颜色等内容.方便创建游戏组件,同时使用Skin也可以批量的粗略处理一些窗口部件. test.json { ...
- 【开源java游戏框架libgdx专题】-13-开发工具-地图的使用
支持libGDX的地图编辑器有很多种,其中比较常用的工具为Tiled地图工具.Tiled是一款非常好用的地图编辑器.下载地址:http://www.mapeditor.org TiledMap类: 又 ...
- 【开源java游戏框架libgdx专题】-11-核心库-演员类
演员类,又称为Actor类,是libgdx开发中最基本的元素,可以被继承. 演员类,从OpenGL类的角度来理解,可以称为一个二维场景节点.它本身具有位置(postion).边界矩形(类似Retang ...
- 【开源java游戏框架libgdx专题】-10-核心库-Viewport
Viewport类,又称为视口类,主要负责管理游戏相机,处理游戏世界坐标与布景层坐标的换算关系.在移动端开发,不像PC端容易.因为要适配不同分辨率的设备.libgdx处理不同的设备屏幕时,用视口处理舞 ...
- 【开源java游戏框架libgdx专题】-04-接口介绍及生命周期
在核心项目中包含6大与操作系统交互的接口,每个后端都实现了这6大接口. Application:运行应用程序并通知API的客户端应用程序级别的事件,提供日志记录设施和查询方法,例如,内存使用. Fil ...
- 【开源java游戏框架libgdx专题】-03-项目开发与调试
创建libgdx项目 下载项目配置工具 gdx-setup.jar 生成项目 导入Eclipse File -> Import -> Gradle -> Gradle Project ...
随机推荐
- Connect mysql on Linux from Windows
ON LINUX: 1 sudo apt-get install mysql-server 2 sudo apt-get install python-dev 3 sudo apt-get insta ...
- MapReduce程序开发之流量求和(八)
1.分析记录手机流量的日志. 2.拿到日志中的一行数据,切分各个字段,抽取出我们需要的字段:手机号,上行流量,下行流量,然后封装成kv发送出去 3.使用java中的map方法: public clas ...
- 关于asp.net core部署到iis中出现 HTTP Error 502.5 - Process Failure的问题
环境是windows Server2008R2 出现这个问题搞了一下午都没解决,最后又加班才算搞定,由于英文不太好,官方的文档看了好几遍,也按照文档做的,但还是出现这个问题,百度google搜了很多解 ...
- 应用ubuntu(安装)
U盘安装Ubuntu 12.04. 工具 UltraISO 9.6.1 ubuntu-12.04.3-desktop-i386 启动U盘 安装UltralISO,启动 文件—打开,选中下载的ubunt ...
- BZOJ 1038 瞭望塔
Description 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安.我们将H村抽象为一维的轮廓.如下图所示 我们可以用一条山的上方轮廓折线(x1, ...
- Little Kings
sgu223:http://acm.sgu.ru/problem.php?contest=0&problem=223 题意:n*n的格子放k个国王,一共有多少种放发. 题解:简单的状压DP. ...
- cf D. Physical Education and Buns
http://codeforces.com/contest/394/problem/D 题意:给你n个数,然后通过操作使得这n个数变为一个等差数列,操作是可以经过小于等于k次加1或减去1,要使得k尽量 ...
- hg 证书验证失败
hg clone https://bitbucket.org/pygame/pygame 出现abort: error: _ssl.c:504: error:14090086:SSL routines ...
- 【模拟】ECNA 2015 I What's on the Grille? (Codeforces GYM 100825)
题目链接: http://codeforces.com/gym/100825 题目大意: 栅栏密码.给定N(N<=10),密钥为一个N*N的矩阵,'.'代表空格可以看到,'X'代表被遮挡,还有密 ...
- SharePoint Server 2007 Enterprise Key
正式版 key SN: Tkjcb-3wkhk-2ty2t-qymk2-9xm2y 这个版本也是通过Key来区分是否是测试版还是正式版的 也就是说你输入正式版的Key他就是正式版,输入Enterpri ...