Ajuda com Strings e arquivos

3 respostas
marceloamigo

Olá pessoal
Minha dúvida esta comentada no meio do código

public void gerarArquivosTop() throws IOException {
        Conexao conn = new Conexao();
        try {
            ResultSet rs = conn.obterRs("select * from Produtos order by Codigo");
            while (rs.next()) {                
                String caminho = jflCaminho.getSelectedFile().getAbsolutePath() + "/P" + String.format("%1$05d", rs.getInt("codigo")) + ".txt";
                try {
                    FileWriter arquivoProd = new FileWriter(caminho);
                    //na linha abaixo, eu quero pegar os 20 primeiros caracteres da string, se a string 
                    //tiver menos do que 20 chars, preencher com espaços em branco para ficar com 20
                    //e inserir um avanço de linha
                    arquivoProd.append(String.format(rs.getString("Descricao_Reduzida"),"??????") 
                    arquivoProd.close();
                } catch (IOException ex) {
                    Logger.getLogger(Exportacao.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        } catch (SQLException ex) {
            Logger.getLogger(Exportacao.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

alguma dica??

3 Respostas

T
//na linha abaixo, eu quero pegar os 20 primeiros caracteres da string, se a string   
                 //tiver menos do que 20 chars, preencher com espaços em branco para ficar com 20  
                 //e inserir um avanço de linha  
                arquivoProd.append(String.format("%-20.20s%n",  rs.getString("Descricao_Reduzida"));

Se a string tiver mais de 20 caracteres, ela será truncada. É isso mesmo?

Se você não quiser truncar a string se ela ultrapassar 20 caracteres, então a formatação é:

arquivoProd.append(String.format("%-20s%n",  rs.getString("Descricao_Reduzida"));
marceloamigo

exatamente o q eu precisava

arquivoProd.append(String.format("%-20.20s%n",rs.getString("Descricao_Reduzida")));

obrigado

O

Excelente. Já li a documento da Class Formatter de cabo a rabo, mas tem coisa que não dá pra sacar de regex só ali. Eu pelo menos, por mais óbvio que pareça, nunca tinha me tocado que na sintaxe de um formatador que é “%[argument_index$][flags][width][.precision]conversion”, o “precision” poderia ser usado para Strings.
Gujando e aprendendo. :smiley:

Criado 19 de fevereiro de 2009
Ultima resposta 20 de fev. de 2009
Respostas 3
Participantes 3