///
/// read the file line by line
///
try {
BufferedReader in = new BufferedReader(new FileReader(args[0]));
String str;
while ((str = in.readLine()) != null) {
_log(str);
}
in.close();
} catch (IOException e) {
}
martes, junio 14, 2011
Read a text file line by line in Java
jueves, junio 09, 2011
Write a text file in Android using the emulator in Eclipse
///
/// check read/write permissions
boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
// We can read and write the media
mExternalStorageAvailable = mExternalStorageWriteable = true;
Log.i(TAG,"read + write");
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
// We can only read the media
mExternalStorageAvailable = true;
mExternalStorageWriteable = false;
Log.i(TAG,"read");
} else {
// Something else is wrong. It may be one of many other states, but all we need
// to know is we can neither read nor write
mExternalStorageAvailable = mExternalStorageWriteable = false;
Log.i(TAG,"nothing");
}
///
/// write text file
File testFile = new File(Environment.getExternalStorageDirectory()+"/test.txt");
try{
testFile.createNewFile();
}catch(IOException e){
Log.e("IOException", "exception in createNewFile() method");
}
//we have to bind the new file with a FileOutputStream
FileOutputStream os = null;
try{
os = new FileOutputStream(testFile);
}catch(FileNotFoundException e){
Log.e("FileNotFoundException", "can't create FileOutputStream");
}
PrintWriter pw = new PrintWriter(os);
pw.println("test");
pw.close();
Log.i(TAG,"wrote in: " + Environment.getExternalStorageDirectory()+ "/test.txt");
domingo, abril 08, 2007
Java: Servlet básico - Minimal Servlet
Contiene ejemplos básicos para la obtención de parámetros, escritura de la respuesta web, ...
Para la respuesta web es recomendable usar un método en el que se le pase como parámetros el descriptor de la salida y la ruta de la página a mostrar. El método es el siguiente (el primero es una versión básica y el segundo permite introducir cambios mediante un array de pares de string "antiguo-nuevo"):
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.io.File.*;
import java.util.*;
public class Middleware extends HttpServlet {
//Initialize global variables
public void init() throws ServletException {
}
//Process the HTTP Get request > aqui tratamos la peticion
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
//obtenemos el descriptor sobre el que devolveremos la respuesta html
response.setContentType("text/html");
PrintWriter out = response.getWriter();
try {
//forma de obtener los parametros > vienen de un formulario
String servicio = request.getParameter("servicio");
}
catch (Exception e) {
out.println("Error en el Servlet del servicio web.");
}
}
//Process the HTTP Post request > no importa el metodo, lo tratamos todo igual
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
//Clean up resources
public void destroy() {
}
}
public static void enviarPagina(String pagina, PrintWriter out)
{
try {
FileReader fr = new FileReader(pagina);
BufferedReader buffer = new BufferedReader(fr);
String linea = buffer.readLine();
while (linea != null)
{
out.println(linea);
linea=buffer.readLine();
}
}
catch(Exception e)
{
System.out.println("Error al abrir el fichero");
out.println("Error al cargar el fichero de la página - " + e.toString());
try{
File dir1 = new File(".");
out.print("Current dir : " + dir1.getCanonicalPath());
}catch(Exception en){}
}
}
public static void enviarPagina(String pagina, PrintWriter out, String[][] cambios)
{
try {
FileReader fr = new FileReader(pagina);
BufferedReader buffer = new BufferedReader(fr);
String linea = buffer.readLine();
while (linea != null)
{
//hacemos los cambios necesarios
for(int i=0;i(menorque)cambios.length;i++){
linea = linea.replaceAll(cambios[i][0],cambios[i][1]);
}
//escribimos
out.println(linea);
linea=buffer.readLine();
}
}
catch(Exception e)
{
System.out.println("Error al abrir el fichero");
}
}
martes, noviembre 28, 2006
Uso de Hashtable en J2ME - Hashtable management using J2ME
Ejemplo del manejo (inserción y eliminación de elementos usando un string como key) de un Hashtable en J2ME sobre la lógica de un chat donde los usuarios y las salas de chat se almacenan por separado, enlazándose mediante referencias.
/*
* LogicaChat.java
*
* Created on 28 de noviembre de 2006, 19:00
*
* Pedro Luis Mateo || pedrolmn@gmail.com
*/
package hello;
import java.util.*;
////////////////////////////////////////////////////////////////////////////////
public class LogicaChat {
/** Creates a new instance of LogicaChat */
public LogicaChat() {
}
//variables en las que se basa la logica del chat
/*private*/ Hashtable chatrooms = new Hashtable();
/*private*/ Hashtable users = new Hashtable();
//metodos
public void newChatRoom(ChatRoom cr){
chatrooms.put(cr.name,cr);
}
public void delChatRoom(ChatRoom cr){
//primero elimino todos sus usuarios
cr.users.resetIterator();
while (cr.users.hasNext()){
//disminuyo la rpesencia de un usuario en salas
((User)cr.users.next()).exitRoom();
//si ya no se encuentra en ninguna sala, elimino
if (!((User)cr.users.next()).isInRooms()){
users.remove(((User)cr.users.next()).nick);
}
}
//por ultimo elimino el chatroom
chatrooms.remove(cr.name);
}
public void newUser(User u){
users.put(u.nick,u);
}
public void delUser(User u){
//eliminamos si no esta presente en ningun chatroom
if (!u.isInRooms()) users.remove(u.nick);
}
public void addUserChat(String nu, String ncr){
try{
User u = (User)users.get(nu);
ChatRoom cr = (ChatRoom)chatrooms.get(ncr);
cr.addUser(u);
}catch(Exception e){}
}
public void delUserChat(String nu, String ncr){
try{
User u = (User)users.get(nu);
ChatRoom cr = (ChatRoom)chatrooms.get(ncr);
//comprobaremos que ese usuario pertenece a ese chatroom
if (cr.users.exists(u)){
//disminuimos la presencia
u.exitRoom();
//eliminamos el enlace desde el chatroom
cr.removeUser(u);
//si el usuario ya no se encuentra en ninguna sala lo eliminamos
if (!u.isInRooms()){
users.remove(u);
}
}
}catch(Exception e){}
}
public User existsUser(String nick){
return (User)users.get(nick);//puede devolver null
}
}
miércoles, noviembre 22, 2006
Editor gratuito para Java con soporte para aplicaciones móviles - Free IDE for Java with mobile support
Download links: NetBeans - Mobility pack
LinkedList de Java para J2ME - Java LinkedList for J2ME
Muy útil si desarrollas aplicaciones para entornos móviles en Java, ya que las listas enlazadas no vienen implementadas por defecto en el J2ME y son muy útiles para la elaboración de implementaciones móviles.
Se trata de una versión básica fácilmente mejorable y adaptable.
/*
* MList.java
*
* Created on 22 de noviembre de 2006, 12:58
*
* Pedro Luis Mateo || pedrolmn@gmail.com
*/
package hello;
import java.util.Vector;
/**
*
* @author Pedro Luis Mateo
*/
public class MList {
/** Creates a new instance of MList */
public MList() {
}
////////////////////////////////////////////////////////////////////////////
// METODOS PARA EL MANEJO DE LA LISTA - LIST HANDLE METHODS
private Vector list = new Vector();
public void addLast(Object o){
list.insertElementAt(o,list.size());
}
public Object getLast(){
return list.lastElement();
}
public void addFirst(Object o){
list.indexOf(o,0);
}
public Object getFirst(){
return list.firstElement();
}
public boolean remove(Object o){
return list.removeElement(o);
}
public int size(){
return list.size();
}
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//// ITERADOR - ITERATOR METHODS ////
/////////////////////////////////////
int current=0;
Object currentObj=null;
public boolean hasNext(){
if (current < list.size()){
currentObj = list.elementAt(current);
current++;
return true;
}
else{
return false;
}
}
public Object next(){
return currentObj;
}
public void resetIterator(){
current=0;
currentObj=null;
}
}