Я пытаюсь создать сегменты данных из текстового файла для передачи по сети на другое устройство, однако мое устройство чтения не работает.
Оно прочитает фрагмент, отправит его и обновите значение счетчика restigBytes, затем прочитайте следующий сегмент, с которого должен начинаться следующий сегмент. Например, HelloWorld будет состоять из 2 5-байтовых сегментов «Hello» и «World», но когда я читаю файл, он читает только первые 5 букв («Hello») 2 раза и вообще не читает «World».
Как заставить fileReader читать с определенной начальной точки, а не всегда с самого начала. Я не ограничен в использовании FileReader, если есть более подходящее средство чтения, которое я мог бы реализовать, и дайте мне знать.
public int readData() throws IOException {
//creates the file reader for the input file.
FileReader myReader = null;
try {
myReader = new FileReader(inputFileName);
} catch (IOException e){
System.out.println("File reader could not be initialized");
System.out.println(e.getMessage());
System.exit(0);
}
System.out.println("Creating segment...");
System.out.println("----------------------------------------------------");
//reads the input file and changes the segments values
if (this.remainingBytes < this.maxPayload) {
//if the payload size is greater than the number of characters left
char[] segCharsBuf = new char[(int) this.remainingBytes];
myReader.read(segCharsBuf,0,(int)this.remainingBytes);
this.dataSeg.setSize((int)remainingBytes);
this.dataSeg.setPayLoad(Arrays.toString(segCharsBuf));
this.dataSeg.setSq(((int)this.fileSize - (int)this.remainingBytes) / this.maxPayload);
System.out.println("Segment number " + this.dataSeg.getSq() +" created (" + this.dataSeg.getSize() + " Bytes)");
System.out.println("----------------------------------------------------");
return -1;
} else {
//if the file is longer or just as ling as the payload size
char[] segCharsBuf = new char[this.maxPayload];
myReader.read(segCharsBuf,0, this.maxPayload);
this.dataSeg.setSize(this.maxPayload);
this.dataSeg.setPayLoad(Arrays.toString(segCharsBuf));
this.dataSeg.setSq(((int)this.fileSize - (int)this.remainingBytes) / this.maxPayload);
System.out.println("Segment number " + this.dataSeg.getSq() +" created (" + this.dataSeg.getSize() + " Bytes)");
System.out.println("----------------------------------------------------");
return 0;
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... -a-txt-fie
Java читает строку определенной длины и положения из текстового файла ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как заполнить строку n символом, чтобы сделать ее определенной длины в Python
Anonymous » » в форуме Python - 0 Ответы
- 31 Просмотры
-
Последнее сообщение Anonymous
-