Ho un file, che consiste in un una riga:ordinamento di un file enorme in Java
1 , 1 2 , 1 3 6 , 4 ,...
In questa rappresentazione, gli spazi separare gli interi e le virgole. Questa stringa è così grande che non riesco a leggerla con RandomAccessFile.readLine() (quasi 4 Gb necessari). In modo che ho creato un buffer, che può contenere 10 numeri interi. Il mio compito è quello di ordinare tutti gli interi nella stringa.
Potresti, per favore, aiutare?
EDIT
@Oscar Reyes
ho bisogno di scrivere alcune sequenze di numeri interi in un file e poi leggere da esso. In realtà non lo so, come farlo. Sono un principiante. Così ho deciso di usare i caratteri per scrivere numeri interi, i delimitatori tra interi sono "," e i delimitatori tra le sequenze sono "\ n \ r" che. In modo che ho creato un mostro che lo legge:
public BinaryRow getFilledBuffer(String filePath, long offset) throws IOException{
mainFile = new RandomAccessFile(filePath, "r");
if (mainFile.length() == 0){
return new BinaryRow();
}
StringBuilder str = new StringBuilder();
mainFile.seek(mainFile.length()-4); //that is "\n" symbol
char chN = mainFile.readChar();
mainFile.seek(offset);
int i = 0;
char nextChar = mainFile.readChar();
while (i < 11 && nextChar != chN){
str.append(nextChar);
if (nextChar == ','){
i++;
if (i == 10){
break;
}
}
nextChar = mainFile.readChar();
}
if (nextChar == chN){
position = -1;
}else{
position = mainFile.getFilePointer();
}
BinaryRow br = new BinaryRow();
StringBuilder temp = new StringBuilder();
for (int j = 0; j < str.length(); j++){
if ((str.charAt(j) != ',')){
temp.append(str.charAt(j));
if (j == str.length() - 1){
br.add(Integer.parseInt(temp.toString()));
}
}else{
br.add(Integer.parseInt(temp.toString()));
temp.delete(0, temp.length());
}
}
mainFile.close();
return br;
}
Se potessi consigliare come farlo, si prega di farlo =)
Dov'è il problema con il tuo codice? Quali approcci hai provato? –
sì, per scrivere questi numeri interi in un file ho usato RandomAccessFile.writeChars(). Ho provato a usare writeInt() ma gli interi si sono uniti ... Quindi writeChars() ha scritto interi in questo modo, ho aggiunto solo virgola ... – Dmitry
@Dmitry: cosa c'è di sbagliato nell'avere il numero '136' insieme, perché ne hai bisogno come '1 3 6'? – OscarRyz