<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://wiki.cifprodolfoucha.es/index.php?action=history&amp;feed=atom&amp;title=LIBGDX_Gardando_datos.</id>
	<title>LIBGDX Gardando datos. - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.cifprodolfoucha.es/index.php?action=history&amp;feed=atom&amp;title=LIBGDX_Gardando_datos."/>
	<link rel="alternate" type="text/html" href="https://wiki.cifprodolfoucha.es/index.php?title=LIBGDX_Gardando_datos.&amp;action=history"/>
	<updated>2026-10-18T10:50:24Z</updated>
	<subtitle>Historial de revisiones de esta página en el wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://wiki.cifprodolfoucha.es/index.php?title=LIBGDX_Gardando_datos.&amp;diff=528&amp;oldid=prev</id>
		<title>Wiki en 17:25 12 dic 2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.cifprodolfoucha.es/index.php?title=LIBGDX_Gardando_datos.&amp;diff=528&amp;oldid=prev"/>
		<updated>2015-12-12T17:25:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 17:25 12 dic 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l183&quot; &gt;Línea 183:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 183:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Arquivos Internal: son todos os arquivos que se atopan no cartafol assets (gráficos, música,...). Son empaquetados xunto coa aplicación nun arquivo jar.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Arquivos Internal: son todos os arquivos que se atopan no cartafol assets (gráficos, música,...). Son empaquetados xunto coa aplicación nun arquivo jar.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Arquivos Local: para gardar pequenas cantidades de información, como o estado dun xogo ou as [http://&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;manuais&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;iessanclemente&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;net&lt;/del&gt;/index.php?title=LIBGDX_Gardando_datos.#Preferencias preferencias do mesmo].&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Arquivos Local: para gardar pequenas cantidades de información, como o estado dun xogo ou as [http://&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wiki&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;cifprodolfoucha&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;es&lt;/ins&gt;/index.php?title=LIBGDX_Gardando_datos.#Preferencias preferencias do mesmo].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Arquivos External: para gardar grandes cantidades de información ou descargar información da web.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Arquivos External: para gardar grandes cantidades de información ou descargar información da web.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Wiki</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.cifprodolfoucha.es/index.php?title=LIBGDX_Gardando_datos.&amp;diff=526&amp;oldid=prev</id>
		<title>Wiki: Página creada con «&lt;span style=&quot;font-size:150%;&quot;&gt;UNDIDADE 2: Gardando datos &lt;/span&gt;   ==Introdución==  Neste punto imos ver como podemos facer para gardar datos de forma persistente, é dici...»</title>
		<link rel="alternate" type="text/html" href="https://wiki.cifprodolfoucha.es/index.php?title=LIBGDX_Gardando_datos.&amp;diff=526&amp;oldid=prev"/>
		<updated>2015-12-12T17:24:10Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «&amp;lt;span style=&amp;quot;font-size:150%;&amp;quot;&amp;gt;UNDIDADE 2: Gardando datos &amp;lt;/span&amp;gt;   ==Introdución==  Neste punto imos ver como podemos facer para gardar datos de forma persistente, é dici...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:150%;&amp;quot;&amp;gt;UNDIDADE 2: Gardando datos &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introdución==&lt;br /&gt;
&lt;br /&gt;
Neste punto imos ver como podemos facer para gardar datos de forma persistente, é dicir, que os podamos recuperar no momento que queiramos.&lt;br /&gt;
&lt;br /&gt;
Dependendo do dispositivo onde esteamos a executar o xogo, estes datos poden gardarse no disco duro (versión desktop) ou na tarxeta de memoria (versión móbil).&lt;br /&gt;
&lt;br /&gt;
Imos distinguir dous tipos de datos:&lt;br /&gt;
* Referidos a preferencias de configuración do xogo.&lt;br /&gt;
* Datos de calquera tipo que necesitemos gardar, como os high-scores do xogo ou partidas gardadas (necesitamos gardar o estado do xogo).&lt;br /&gt;
&lt;br /&gt;
==Preferencias==&lt;br /&gt;
&lt;br /&gt;
Dirección da wiki: https://github.com/libgdx/libgdx/wiki/Preferences&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As preferencias son unha forma de almacenamento no que os datos son gardados como se foran un [http://en.wikipedia.org/wiki/Hashmap hash map] utilizando pares de cadea-valor.&lt;br /&gt;
&lt;br /&gt;
Só podemos utilizar algúns tipos de datos para gardar información:&lt;br /&gt;
:*Mapas de cadeas.&lt;br /&gt;
:*Boolean.&lt;br /&gt;
:*Float.&lt;br /&gt;
:*Long.&lt;br /&gt;
:*String.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Importante:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; As preferencias é a única forma de gardar datos persistentes na versión HTML do xogo.&lt;br /&gt;
&lt;br /&gt;
===Usar as preferencias===&lt;br /&gt;
&lt;br /&gt;
A forma de traballar con preferencias é a seguinte:&lt;br /&gt;
&lt;br /&gt;
*Primeiro debemos obter un obxecto pertencente á clase Preferences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Preferences prefs = Gdx.app.getPreferences(&amp;quot;nomedearquivo&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Nota:&amp;lt;/u&amp;gt; Podemos ter múltiples arquivos de preferencia. Só temos que darlle un nome diferente.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*Agora podemos acceder ou escribir sobre dito arquivo de preferencias.&lt;br /&gt;
&lt;br /&gt;
:*Para escribir:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Preferences prefs = Gdx.app.getPreferences(&amp;quot;nomedearquivo&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
prefs.putString(&amp;quot;nomeparametro1&amp;quot;,&amp;quot;valor1&amp;quot;);&lt;br /&gt;
prefs.putInteger(&amp;quot;nomeparametro2&amp;quot;,&amp;quot;valor2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
prefs.flush();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como vemos temos que utilizar un nome para o dato que queremos gardar (nomeparametro).&lt;br /&gt;
&lt;br /&gt;
Unha vez modificados os datos das preferencias, ditas modificación non se pasan a disco / tarxeta ata que chamemos ó &amp;#039;&amp;#039;&amp;#039;método flush&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
:*Para ler:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Preferences prefs = Gdx.app.getPreferences(&amp;quot;nomedearquivo&amp;quot;);&lt;br /&gt;
String dato = prefs.getString(&amp;quot;nomeparametro&amp;quot;,&amp;quot;valorpordefecto&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como comentamos antes, cando gardamos un dato temos que indicar un nome para o parámetro. Dito nome é o que temos que utilizar cando recuperamos a información. Se dito valor non se atopa gardado no arquivo de preferencias podemos asinar un valor por defecto.&lt;br /&gt;
&lt;br /&gt;
O recurso que utiliza Libgdx para gardar as preferencias na versión móbil son as [http://developer.android.com/reference/android/content/SharedPreferences.html SharedPreferences].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Almacenamento físico===&lt;br /&gt;
&lt;br /&gt;
As preferencias se gardan nun arquivo XML de nome o indicado na orde &amp;#039;&amp;#039;&amp;#039;Gdx.app.getPreferences(&amp;quot;nomedearquivo&amp;quot;)&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Fisicamente se garda no cartafol:&lt;br /&gt;
&lt;br /&gt;
*Windows: %UserProfile%/.prefs/NomeArquivo&lt;br /&gt;
*Linux and OS X: ~/.prefs/NomeArquivo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un exemplo do código de dito arquivo que se atopa no cartafol .prefs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE properties SYSTEM &amp;quot;http://java.sun.com/dtd/properties.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;properties&amp;gt;&lt;br /&gt;
&amp;lt;entry key=&amp;quot;musica&amp;quot;&amp;gt;false&amp;lt;/entry&amp;gt;&lt;br /&gt;
&amp;lt;/properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TAREFA 2.13 A FACER:&amp;#039;&amp;#039;&amp;#039; Esta parte está asociada á realización dunha tarefa.  &lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
==Datos==&lt;br /&gt;
&lt;br /&gt;
Dirección da wiki; https://github.com/libgdx/libgdx/wiki/File-handling&lt;br /&gt;
&lt;br /&gt;
Imos dar o máis básico para o manexo de arquivos, tendo toda a información no enlace anterior.&lt;br /&gt;
&lt;br /&gt;
Coas clases que nos proporciona o framework LIBGDX imos poder:&lt;br /&gt;
*Ler dun arquivo.&lt;br /&gt;
*Escribir nun arquivo.&lt;br /&gt;
*Copiar, mover ou borrar un arquivo.&lt;br /&gt;
*Listar arquivos e cartafois.&lt;br /&gt;
*Comprobar se un arquivo existe ou non.&lt;br /&gt;
&lt;br /&gt;
O manexo de arquivos vai diferir da plataforma utilizada:&lt;br /&gt;
&lt;br /&gt;
* DESKTOP (Windows, LINUX, MAC OS): Os arquivos poden ser referencias de forma relativa ó cartafol de traballo (onde está a aplicación que se executa). Os arquivos son de lectura-escritura por todas as aplicacións.&lt;br /&gt;
&lt;br /&gt;
* Móbil (ANDROID): Aquí temos varias opcións:&lt;br /&gt;
:*Os datos poden ser gardados internamente no cartafol assets, o cal é &amp;#039;empaquetado&amp;#039; dentro da aplicación apk e non se poden modificar (só permisos de lectura).&lt;br /&gt;
:*Os datos poden ser gardados internamente. Os datos poden ser lidos e modificados pero só ten acceso a aplicación que os crea.&lt;br /&gt;
:*Os datos poden ser gardados na tarxeta sd externa. É necesario engadir os permisos correspondentes no AndroidManifiest.xml do proxecto Android:&lt;br /&gt;
::&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;10&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;manifest xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    package=&amp;quot;com.plategaxogo2d.angel.android&amp;quot;&lt;br /&gt;
    android:versionCode=&amp;quot;1&amp;quot;&lt;br /&gt;
    android:versionName=&amp;quot;1.0&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;uses-sdk android:minSdkVersion=&amp;quot;8&amp;quot; android:targetSdkVersion=&amp;quot;19&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;uses-permission android:name=&amp;quot;android.permission.WAKE_LOCK&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;uses-feature android:required=&amp;quot;false&amp;quot; android:name=&amp;quot;android.hardware.sensor.accelerometer&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;uses-permission android:name=&amp;quot;android.permission.WRITE_EXTERNAL_STORAGE&amp;quot;/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* IOS: en ios todos os arquivos son accesibles.&lt;br /&gt;
&lt;br /&gt;
* Javascript/WebGL: só accesibles os que se atopan no cartafol assets aínda que os navegadores modernos soportan os datos gardados internamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un resume obtido do enlace anterior nos pode dar unha idea xeral en función da plataforma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=5&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Tipo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Descrición,path e características &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Desktop&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Android&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;HTML5&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;IOS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|- &lt;br /&gt;
| Internal&lt;br /&gt;
| Os arquivos de tipo internal son gardados no cartafol raíz da versión desktop (onde se atopa o executable), relativos ó cartafol assets na versión Android e relativos ó cartafol war/assets na versión GWT. Os arquivos aquí gardados son só de lectura.&lt;br /&gt;
| Si&lt;br /&gt;
| Si&lt;br /&gt;
| Si&lt;br /&gt;
| Si&lt;br /&gt;
|- &lt;br /&gt;
| Local&lt;br /&gt;
| Os arquivos de tipo local son gardados no cartafol raíz da versión desktop (onde se atopa o executable), relativos ó cartafol interno na versión Android (as aplicacións Android crear un cartafol na tarxeta sd interna onde só elas poden acceder).&lt;br /&gt;
| Si&lt;br /&gt;
| Si&lt;br /&gt;
| Non&lt;br /&gt;
| Si&lt;br /&gt;
|- &lt;br /&gt;
| External&lt;br /&gt;
| Os arquivos de tipo external son gardados relativos ó cartafol raíz da SD Card na versión móbil ou relativos ó cartafol home do usuario da versión Desktop (normalmente C:\Documents And Settings\Ususario). Pódense ler ou escribir.&lt;br /&gt;
| Si&lt;br /&gt;
| Si&lt;br /&gt;
| Non&lt;br /&gt;
| Si&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No cadro orixinal veñen dous tipos máis pero que nos xogos non se usan.&lt;br /&gt;
&lt;br /&gt;
Normalmente imos utilizar:&lt;br /&gt;
&lt;br /&gt;
* Arquivos Internal: son todos os arquivos que se atopan no cartafol assets (gráficos, música,...). Son empaquetados xunto coa aplicación nun arquivo jar.&lt;br /&gt;
* Arquivos Local: para gardar pequenas cantidades de información, como o estado dun xogo ou as [http://manuais.iessanclemente.net/index.php?title=LIBGDX_Gardando_datos.#Preferencias preferencias do mesmo].&lt;br /&gt;
* Arquivos External: para gardar grandes cantidades de información ou descargar información da web.&lt;br /&gt;
&lt;br /&gt;
===Comprobar se temos acceso ó almacenamento===&lt;br /&gt;
&lt;br /&gt;
Nunca está de mais comprobar se o almacenamento está dispoñible.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; &amp;gt;&lt;br /&gt;
boolean isExtAvailable = Gdx.files.isExternalStorageAvailable();&lt;br /&gt;
boolean isLocAvailable = Gdx.files.isLocalStorageAvailable();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Acceder ós arquivos===&lt;br /&gt;
&lt;br /&gt;
A forma de acceder ós arquivos é cun obxecto da [http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/files/FileHandle.html clase FileHandle].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Almacenamento interno:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; &amp;gt;&lt;br /&gt;
FileHandle arquivo = Gdx.files.internal(&amp;quot;data/arquivo.txt&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Facemos referencia ó cartafol assets da versión móbil.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Almacenamento externo:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; &amp;gt;&lt;br /&gt;
FileHandle arquivo = Gdx.files.external(&amp;quot;data/arquivo.txt&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Lectura e escritura de arquivos===&lt;br /&gt;
&lt;br /&gt;
Dependendo do tipo de información (texto ou binaria) podemos gardar e ler a información de dúas maneiras.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;LECTURA:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lectura de texto:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; &amp;gt;&lt;br /&gt;
FileHandle arquivo = Gdx.files.external(&amp;quot;data/arquivo.txt&amp;quot;);&lt;br /&gt;
String texto = file.readString();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Nota:&amp;lt;/u&amp;gt;: le todo o arquivo.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lectura de bytes (como unha imaxe):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; &amp;gt;&lt;br /&gt;
FileHandle arquivo = Gdx.files.external(&amp;quot;data/arquivo.txt&amp;quot;);&lt;br /&gt;
byte[] bytes = arquivo.readBytes();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Nota:&amp;lt;/u&amp;gt;: le todo o arquivo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;ESCRITURA:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Escritura de texto:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; &amp;gt;&lt;br /&gt;
FileHandle arquivo = Gdx.files.external(&amp;quot;data/arquivo.txt&amp;quot;);&lt;br /&gt;
arquivo.writeString(&amp;quot;Texto&amp;quot;, false);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O [http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/files/FileHandle.html#writeString-java.lang.String-boolean- parámetro false] indica se queremos engadir ó final do arquivo a nova cadea ou crear un arquivo novo.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Escritura de bytes:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; &amp;gt;&lt;br /&gt;
FileHandle arquivo = Gdx.files.external(&amp;quot;data/arquivo.txt&amp;quot;);&lt;br /&gt;
arquivo.writeBytes(new byte[] { 20, 3, -2, 10 }, false);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TAREFA 2.14 A FACER:&amp;#039;&amp;#039;&amp;#039; Esta parte está asociada á realización dunha tarefa.  &lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
===Lectura e escritura de arquivos. Outra opción===&lt;br /&gt;
&lt;br /&gt;
Outra forma de acceder ó almacenamento externo é:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;LECTURA:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clases InputStreamReader e BufferedReader:&lt;br /&gt;
&lt;br /&gt;
Exemplo de código para ler liña a liña un arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
		BufferedReader in = null;&lt;br /&gt;
		try {&lt;br /&gt;
			in = new BufferedReader(new InputStreamReader(Gdx.files.external(&lt;br /&gt;
					&amp;quot;NOME_ARQUIVO&amp;quot;).read()));&lt;br /&gt;
			String valor = &amp;quot;&amp;quot;;&lt;br /&gt;
			valor = String.valueOf(in.readLine());&lt;br /&gt;
		} catch (Throwable e) {&lt;br /&gt;
			// :( It&amp;#039;s ok we have defaults&lt;br /&gt;
		} finally {&lt;br /&gt;
			try {&lt;br /&gt;
				if (in != null)&lt;br /&gt;
					in.close();&lt;br /&gt;
			} catch (IOException e) {&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;ESCRITURA:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clases OutputStreamWriter e BufferedWriter:&lt;br /&gt;
&lt;br /&gt;
Exemplo de código para escribir a un arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
		BufferedWriter out = null;&lt;br /&gt;
		try {&lt;br /&gt;
			out = new BufferedWriter(new OutputStreamWriter(Gdx.files.external(&lt;br /&gt;
					&amp;quot;NOME_ARQUIVO&amp;quot;).write(false)));&lt;br /&gt;
			out.write(&amp;quot;DATOS A ESCRIBIR&amp;quot;); &lt;br /&gt;
			out.newLine();&lt;br /&gt;
		} catch (Throwable e) {&lt;br /&gt;
		} finally {&lt;br /&gt;
			try {&lt;br /&gt;
				if (out != null)&lt;br /&gt;
					out.close();&lt;br /&gt;
			} catch (IOException e) {&lt;br /&gt;
				&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Gardando o estado do meu xogo==&lt;br /&gt;
&lt;br /&gt;
O visto ata o de agora a forma máis fácil de gardar o estado un xogo é utilizando as preferencias.&lt;br /&gt;
&lt;br /&gt;
Pero se necesitamos gardar grandes cantidades de datos pode ser interesante utilizar a [http://es.wikipedia.org/wiki/JSON serialización JSON] que consiste en pasar os datos en forma de obxectos dunha clase a arquivos de texto que poidan ser gardados na SD ou internalmente.&lt;br /&gt;
&lt;br /&gt;
A idea é que se eu quero gardar o estado do meu xogo podo gardar toda a información (ou polo menos a que necesito) do Alien (posición, num. vidas,...), posición dos inimigos, tempo que queda,...Case toda esta información está gardada en instancias de clases. Podemos pasar cada obxecto de cada clase a un formato JSON e gardalo a disco para posteriormente recuperalo.&lt;br /&gt;
&lt;br /&gt;
Máis información en:&lt;br /&gt;
https://github.com/libgdx/libgdx/wiki/Reading-&amp;amp;-writing-JSON&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exemplo de código:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
      Json json = new Json();&lt;br /&gt;
      json.toJson(playerInfo, Gdx.files.external(&amp;quot;myfile.json&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
      //Lemos PlayerInfo dende o arquivo gardado&lt;br /&gt;
      PlayerInfo savedInfo = json.fromJson(PlayerInfo.class, Gdx.files.external(&amp;quot;myfile.json&amp;quot;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sendo playerInfo un obxecto da clase PayerInfo onde temos os datos a gardar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; -- [[Usuario:angelfg|Ángel D. Fernández González]] -- (2015).&lt;/div&gt;</summary>
		<author><name>Wiki</name></author>
		
	</entry>
</feed>