Gravar arquivo

Opa…
Tô com um problema na hora de gravar um arquivo que deve ser composto somente de inteiros (aproximadamente 9 mil). O problema é o seguinte:
Todas os métodos que possibilitam gravar inteiros direto para o arquivo de texto, preenchem tudo com uma grande quantidade de caracteres especiais ou nem mesmo é preenchido, ficando com 0k. Tentei fazer de várias formas (BufferedWriter, FileOutputStream, PrintWriter) e não adianta.

O caso é que preciso que o arquivo seja gravado em inteiros, para ao final possua um tamanho de “entradas x 4 bytes”. No caso, a única forma que consegui foi convertendo para string, mas assim não atende meu requisito por conta do tamanho do arquivo que fica maior…

alguém sabe se tem alguma solução ou se é algum problema do recurso mesmo?

Agradeço desde já o pessoal que puder ajudar.

Você poderia serializar um objeto com um ArrayList de int
Seria uma alternativa, isso atende ao seu requisito?

Usa o método print() ou println() da classe PrintWriter que da certo.

Então…na verdade serialização não seria útil para o que preciso…é uma prática da faculdade, então tenho que seguir umas regras, mesmo sabendo que há outras formas melhores…é complicado hehe.
Com relação ao PrintWriter, quando uso ele, nem gravar os inteiros no arquivo ele não grava…só quando gravo uma string.

    private static void escrever() {
        File dir = new File("C:\TutorialArquivos");
        File arq = new File(dir, "User.txt");

        try {

            //neste ponto criamos o arquivo fisicamente
            arq.createNewFile();

            //Devemos passar no construtor do FileWriter qual arquivo
            // vamos manipular.
            // Esse construtor aceita dois tipos de parâmetros,
            // File ou String.
            //O parâmetro true indica que reescrevemos no arquivo
            // sem apagar o que já existe.
            // O false apagaria o conteúdo do arquivo e escreveria
            // o novo conteúdo.
            // Se não usar o 2° parâmetro, ele por padrão será false.
            //O mais importante, essa linha abre o fluxo do arquivo 
            FileWriter fileWriter = new FileWriter(arq, false);

            //Agora vamos usar a classe PrintWriter para escrever
            //fisicamente no arquivo.
            //Precisamos passar o objeto FileReader em seu construtor
            PrintWriter printWriter = new PrintWriter(fileWriter);

            //Agora vamos escrever no arquivo com o método  println() e print(),
            // que nos permite escrever linha a linha no arquivo ou mesma linha
            printWriter.println(12345);
            printWriter.print(6789);
            printWriter.print(10111213);

            //o método flush libera a escrita no arquivo
            printWriter.flush();

            //No final precisamos fechar o arquivo
            printWriter.close();

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

    }

Aqui grava os inteiros sem problema.

Hmm…não estava usando esse flush. Não testei ainda pq deu certo mesmo usando DataOutputStream e DataInputStream (depois vou precisar buscar por bytes)
mas de toda forma depois vou testar sim… E vlw d+ aí todo mundo que ajudou.