После поиска ответа на некоторое время и попытки понять разницу между FileInputStream.read() и FileInputStream.available() Я все еще теряюсь с программой, которую я имею написано.FileInputStream skipping Целые числа с read() - Java
public class Ex1plus2{
final static String fName= "1.dat";
public static void main(String[] args) throws FileNotFoundException,IOException {
int[] a = new int[]{10, 20, 30, 40, 50, 60};
//arrToFile(a);
//arrFromFile();
dataToFile(a);
dataFromFile();
}
static void dataToFile(int[] a) throws IOException{
//final String fName= "1.dat";
try{
File dataFile= new File (fName);
FileOutputStream output=new FileOutputStream(dataFile);
for (int i:a){
output.write(i);
}
output.close();
}
catch(IOException ex){
System.out.println("Oops! File not found...\n"
+ "System will now terminate itself");
System.exit(0);
}
}
static void dataFromFile() throws IOException{
//final String fName= "1.dat";
try{
FileInputStream input= new FileInputStream(fName);
while(input.read()!=-1){
System.out.print(input.read()+" ");
}
input.close();
}
catch(IOException ex){
System.out.println("Oops! File not found...\n"
+ "System will now terminate itself");
System.exit(0);
}
}
При использовании имеющимся() Я получаю полный массив из файла (10 20 30 40 50 60), но когда я использую чтение() Я получаю только половину массива (20 40 60).
Доступно() может читать байты, когда они готовы, в то время как read() блокирует чтение байтов до тех пор, пока fileOutputStream не будет завершен и не закрыт. (Или я ошибаюсь?)
ЕСЛИ это так, то почему это происходит?
Спасибо!
Ах, не заметил этого. Но все же, почему он работает с доступными тогда? – Mapisto
Ничего, подумал. спасибо! вы очень помогли :) – Mapisto