Olá!

Para ler um arquivo texto apartir de um ponto utilize o RandomAccessFile, esta classe possui o método seek() que permite posicionar o cursor em um determinado ponto do arquivo antes de começar a leitura linha-a-linha.
No exemplo abaixo, o método gerarArquivoGigante() cria um arquivo de 96MB e o método main() lê apenas os últimos 521KB desse arquivo.

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;

public class LeitorArquivo {

	public static void main(String[] args) {
		// Inicia a leitura do arquivo
		File file = new File("D:\\ArquivoGigante.txt");

		try {
			// Abre o arquivo em modo de leitura apenas
			RandomAccessFile raf = new RandomAccessFile(file, "r");
			String linha = null;

			// Lê apenas os 512KB do final do arquivo
			raf.seek(raf.length() - 1024 * 512);

			while ((linha = raf.readLine()) != null) {
				// Mostra as linhas no console
				System.out.println(linha);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	/*
	 * Gera um arquivo gigante (96,3MB)
	 */
	public static void gerarArquivoGigante() {
		File file = new File("D:\\ArquivoGigante.txt");
		try {
			FileOutputStream fos = new FileOutputStream(file);
			String linha = "ABCDEFGHACMNSHTYUEILOKJHSNMALOQPLOASGTEBH" +
"YNSDFGJMKLAKSJDQOEWIAAANNSJS"
+"JHGQYAUSKDOEPPKLKJHHGFQWERTYUJ"
					+ System.getProperty("line.separator");
			for (int idx = 0; idx < 1000000; idx++)
				fos.write(linha.getBytes());

			fos.close();

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

Olá!

O Eclipse provê muitos tipos de buscas, desde os mais básicos como o Ctrl + F até busca por referências, declarações e etc.

Hoje vou deixar a dica da busca F4. F4 é a tecla de atalho para a busca da hierarquia de alguma classe ou interface. Na figura abaixo, mostro um exemplo do resultado dessa busca.

Eclipse

Eclipse

Para usar o F4, posicione o cursor sobre a classe ou interface no código-fonte e aperte F4, o resultado é mostrado na view Hierarchy.
Até mais,
Roberto

Olá

Abaixo um exemplo para configurar um appender do log4j programaticamente, ou seja, sem utilizar o log4j.properties (que é a forma mais comum de configurar).

package br.com.furutani;

import org.apache.log4j.FileAppender;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;

public class Main {
private Logger log = Logger.getLogger(Main.class);

public Main() {
// Caminho onde o arquivo será gravado
String path = "D:\\java\\logs\\Main.txt";
// Formatação do log
String pattern = "[%d{ISO8601}] %p - %m%n";

// Criando um FileAppender
FileAppender fileAppender = new FileAppender();
fileAppender.setAppend(true);
fileAppender.setName("FileAppenderLog");
fileAppender.setFile(path);

// Criando um layout para o arquivo de log
PatternLayout patternLayout = new PatternLayout();
patternLayout.setConversionPattern(pattern);
fileAppender.setLayout(patternLayout);

// Efetiva as alterações
fileAppender.activateOptions();

// Adiciona o file appender
Logger.getRootLogger().addAppender(fileAppender);
}

public void fazerLog() {
log.info("Um log");
}

public void fazerMaisUmLog() {
log.error("Outro log");
}

public static void main(String[] args) {
Main main = new Main();
main.fazerLog();
main.fazerMaisUmLog();
}
}

O conteúdo do arquivo será parecido com o listado abaixo:

[2009-10-08 09:03:22,066] INFO – Um log
[2009-10-08 09:03:22,082] ERROR – Outro log

Nesse exemplo usei o log4j-1.2.9.jar.

Até mais,

Roberto

Dicas de iReport

09/julho/2009 - Java

Olá!

Abaixo seis dicas para iReport/JasperReport. Espero que seja úteis para alguém. ;-)

  1. Não exibir null
    Para que o campo texto no relatório não fique exibindo null basta marcar a opção Branco quando nulo na propriedade dos campos texto do seu relatório.
  2. Alterar as propriedades do PDF
    No menu opções > opções de export é possível alterar várias informações que vão embutidas no PDF, como o título, autor, assunto, palavras-chave e aplicativo, no Adobe Reader pressione Ctrl + D para ver as propriedades do documento.
  3. Colocar senha no PDF
    Para colocar senha no relatório é muito fácil, no menu opções > opções de export selecione Is Encripted e preencha no campo using default(User password) e Owner password com a senha para abrir o PDF.
  4. Expressões
    O iReport permite criar expressões bastante sofisticadas, são blocos de código java que são executadas dentro do relatório para mais diversos fins. Geralmente usados determinar se mostra ou não um campo, fazer um cálculo para ser exibido ou simplismente concaternar strings.
    Exemplo: Para dar um substring é só usar
    $P{parametro}.substring( 0, 2 );
    Para concatenar com um espaço no meio use $P{parametro} + ” ” + $P{parametro}
    Para saber se o parâmetro ou campo é diferente de null, $P{parametro} != null.
    Dentro dessas expressões é possível usar os parâmetros, variáveis e os campos.
  5. Internacionalização
    É fácil fazer relatório internacionalizáveis no iReport. No menu editar, clique em propriedades do relatório, na aba i18n informe no campo nome da base do pacote do recurso o prefixo dos arquivos properties com as mensagens. Por exemplo se você tem os arquivos Mensagem_pt_BR.properties, Mensagem_en_US.properties e Mensagem.properties informe nesse campo apenas Mensagem
    Se os arquivos estiverem dentro de pacotes você deve informar o caminho completo, exemplo br.com.furutani.resources.Mensagem
    Existe a opção de informar o
    arquivo de resource bundle via paramêtros, desse forma é mais dinâmica pois você pode montar o resource bundle com uma tabela de banco de dados por exemplo, para isso basta que no HashMap de parâmetros coloque a chave REPORT_RESOURCE_BUNDLE e no valor um objeto do tipo java.util.ResourceBundle.
    Para mostrar um texto do resource bundle no relatório, adicione um campo texto e coloque na propriedade expressão $R{chave}. Exemplo: $R{msg.hoje}
  6. Protegendo o documento PDF
    É possível desabilitar o botão Imprimir, o Ctrl+C no documento, permitir adicionar comentários e etc. no menu opções > opções de export selecione a propriedade Is Encripted e no campo Permissions informe 16 para permitir copiar, 2052 para permitir imprimir, 512 para permitir leitores de telas, 0 (zero) para bloquear tudo. Para permitir copiar e imprimir informe 2068.
    Esses números são baseados nas constantes ALLOW_* encontradas na classe com.lowagie.text.pdf.PdfWriter para saber o número a informar nesse campo com um conjunto de permissões uso o operador |

    Exemplo:  System.out.println(PdfWriter.AllowCopy | PdfWriter.AllowPrinting);

Olá!

A escola de computação de Carnegie Mellon lançou duas ferramentas pra ajudar o programador Java a tomar mais café.

Segundo o blog TI&Governo a ferramenta ajuda na escolha de APIs e na busca de soluções de configuração.

Quando um programador se senta ao computador para programar em Java, ele na verdade se senta ao computador para escolher e configurar APIs (os protocolos pelos quais o computador vai realizar o trabalho).

Por isso a Escola de Computação da Universidade Carnegie Mellon anunciou duas novas ferramentas, a Jadeite e a Apatite, para ajudar o programador a escolher e a configurar APIs.

Com as duas ferramentas, diz Jeffrey Stylos, um programador Java consegue entregar seu programa depois de um terço do tempo, pois ele acha as coisas mais depressa.

A ferramenta Jadeite está disponível nesse site e a Apatite neste e pode ser experimentado nesse link.

Tela do Apatite
Pelo que entendi elas mudaram a forma de busca na documentação do JavaDoc além de ressaltar palavras conforme os hits no Google.

Mas daí dizer que reduz em 1/3 do tempo pra mim é um pouco exagerado.

Fonte: A Carnegie Mellon ajuda programadores Java a arranjar tempo para o café.