Importando informações de um TXT com layout predefinido

Olá, preciso de uma ajuda.

Tenho que ler um arquivo TXT, alterar algumas informações e depois escrever em um novo arquivo, porém com layouts diferentes.

O TXT tem vários números e letras, sem delimitador. A minha referência são os dois primeiros número de cada linha e a quantidade de caracteres de cada campo. Portanto, preciso definir um layout com o tamanho dos campos, vou dar um exemplo:

Arquivo TXT:
104440000 222222288888ABCDEF 77774420091
2299999888888 ABCDEFGHIJKL00000000000
7400000001299999000 000000000100000002340000
7400000001400000100 000000023990000200000100

Cada TIPO de linha, tem um layout diferente. Vamos imaginar que eu quero ler as informações das linhas do TIPO 74, ou seja, todas as linhas que começam com 74 têm o mesmo layout e eu só quero as informações dessas linhas. Então eu teria que definir esse layout para que o sistema separe os campos de acordo com essas informações.

Então o meu layout seria algo parecido com isso:
Tipo: coluna 1, 2 caracteres
Código do produto: coluna 3, 10 caracteres
Quantidade: coluna 13, 7 caracteres
E assim por diante.

Então eu preciso ter essas informações separadas, pra que eu depois possa ler e editar essas informações separadamente, e por fim, gravar um novo TXT com as alterações, seguindo um novo layout predefinido. Nesse novo layout eu usaria os mesmos campos, porém em ordem diferente.

Alguém poderia me dar uma luz de como fazer isso?
Obrigado

Bom, ficou um pouco confuso… mas digamos que o identificador de layout seja os dois primeiros caracteres (a exemplo do 74 que você nos disse)… poderia usar um map contendo a chave do layout (tipo) e para cada chave uma lista com objetos colunas contendo posição inicial e tamanho, sei lá, algo assim:

class ColunaLayout {
    public int posicao;
    public int tamanho;
}

Map<String, List<ColunaLayout>> mapaLayout = new HashMap<String, List<ColunaLayout>>();

ColunaLayout coluna = new ColunaLayout();
coluna.posicao = 3;
coluna.tamanho = 10;

List<ColunaLayout> colunas = new ArrayList<ColunaLayout>();
colunas.add(coluna);

mapaLayout.put("74", colunas);

Bom, aí é com você e deixei os atributos de colunas públicos apenas para exemplos ok? O ideal é usar getters e setters etc…