Input/Output em Java

Neste artigo vamos abordar uma matéria que, a nosso ver, é bastante interessante e importante no mundo da programação: o input/output, neste caso aplicado a Java.

Iremos começar com manipulação de ficheiros e directorias. Vamos ver a seguinte classe Java, onde são demostradas as principais funções da classe File, que é a utilizada para realizar a manipulação. Em seguida vamos explicar o que cada linha faz.

import java.io.*;

public class JavaFile {
   public static void main(String args[]) {
      File file = new File("C:\\file.txt");

      System.out.println( file.getName() ); 

      file.setReadOnly();

      System.out.println( file.isHidden() );
      System.out.println( file.canRead() );
      System.out.println( file.canWrite() );

      file.renameTo( new File("C:\\Ficheiro.txt") ); 

      try {
         if( !file.exists() ) {
            file.createNewFile();
         }
      }
      catch(Exception e){
         System.out.println(e.getMessage());
      }

      if( file.isDirectory() ) {
         System.out.println("Directoria");
      }
      else if( file.isFile() ){
         System.out.println("Ficheiro");
      }

      File [] roots = file.listRoots( );

      for (int i = 0; i < roots.length; i++) {
         System.out.println (roots[i] );
      }

      file.delete();
   }
}

Como podemos ver na linha 5 é instanciado um objecto File que representa o caminho (path) para um possível local do sistema operativo, é bom lembrar que apenas representa um ficheiro ou directoria, não pressupondo que o caminho exista realmente. Neste caso o caminho é o C:\\file.txt, que aponta para o ficheiro file.txt na directoria C:. Também poderia apontar apenas para uma directoria e não para uma ficheiro, como é o caso.

Na linha 7 podemos ver o método getName() que permite obter o nome do ficheiro ou directoria representada pelo File.

Esta classe permite também dar atributos a ficheiros ou directorias, como é o caso do método setReadOnly(), que dá ao ficheiro ou directoria o atributo de apenas poder ser lido e não escrito, tal como esta representado na linha 9.

A classe File permite também verificar atributos e, para isso, podemos usar os métodos isHidden() que verifica se o ficheiro ou directoria se encontra oculto(a) (linha 11), canRead() que verifica se é possível ler o ficheiro ou directoria (linha 12) e o método canWrite() que verifica se é possível escrever no ficheiro ou directoria (linha 13).

O método renameTo() na linha 15 permite renomear um ficheiro ou directoria, mas para além disso permite também mover ficheiros e directorias, bastando para isso dar um caminho diferente no novo nome a dar, o que não é o caso neste exemplo.

Os métodos exists() e createNewFile() (linha 18 e linha 19), são dois métodos muito importantes na manipulação de ficheiros e directorias. O método exists() permite verificar se o ficheiro ou directoria representados no File existe. O método createNewFile() cria um novo ficheiro com o caminho representado. Neste caso iria criar o ficheiro file.txt na directoria C:.

Embora aqui não presente, também temos os métodos mkdir() e mkdirs() que têm a mesma funcionalidade que o método createNewFile(), mas neste caso é criada uma directoria. A diferença do mkdir() para o mkdirs() é basicamente que o método mkdir() apenas cria uma directoria num caminho já existem, ou seja, por exemplo, o seguinte caminho C:\Programas\ o mkdir() poderia criar directorias dentro da directoria Programas apenas e só se a referida directoria já existisse previamente. Já o mkdirs() permite criar toda a árvore de directorias, mesmo se esta não existisse.

Nas linhas 26 e 29 podemos ver os métodos isDirectory() e isFile() que verificam respectivamente se o caminho dado é um directorio ou um ficheiro.

Na linha 33 temos o método listRoots(). Trata-se de um método bastante útil, nomeadamente em sistemas Windows, visto que ele devolve um array com todas a drives ou raízes do sistema operativo, por exemplo A:, C:, D:, E:, etc… Já em sistemas GNU/Linux o conteúdo do array será apenas /, visto ser a raiz do sistema.

Para terminhar esta parte do artigo, temos na linha 39 o método delete(), que como o proprio nome indica, permite eliminar o ficheiro ou directoria representado pelo File.

Learning C# 2005

Actualmente, são muitos os utilizadores que aderem ao mundo da programação, quer para fins profissionais, quer para diversão ou como hobby. Muitos destes interessados deparam -se, de início, com a discutível e inevitável pergunta: “Que linguagem devo aprender primeiro?” Há diversas opiniões sobre o tema, mas uma grande parte dos programadores diria que C# .NET é um a linguagem poderosa e, simultaneamente, ideal para a iniciação.

É aqui que entra o livro Learning C# 2005. Destinado principalmente a utilizadores sem qualquer experiência nesta área, a referida publicação permite ao leitor construir bases sólidas, tanto nos conceitos teóricos do .NET Framework ou de Object Oriented Programming como nas aplicações desses conceitos para a construção de aplicações mais estáveis e funcionais. Através de exemplos de código, dicas e conselhos, a linguagem é apresentada ao iniciante de forma suave, permitindo a assimilação das ideias e a sua aplicação em contexto prático.

Continuar a ler

Evolução

Este projecto continua em evolução e nesta edição isso será mais visível que nunca. Uma mudança de visual foi algo que nos era pedido nos comentários sobre as anteriores edições. Para auxiliar esta mudança, usámos um programa propriamente destinado a publicações, o Scribus. Também é open-source e, embora possua ainda alguns defeitos, como na edição de texto, possibilitou-nos a revolução gráfica desta edição, para melhor ou pior depois saberemos, mas gostámos dos resultados.
Continuar a ler