Java-da FileInputStream


fayl FileInputStream JavaBaxılıb 102

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Java-da FileInputStream

Java-dakı FileInputStream sinfi, InputStream sinifini genişləndirir. Bu sinfi məlumatları bayt şəklində bir fayldan oxumaq üçün istifadə edirik. Məsələn, bir şəkil, pdf faylı, audio, video oxumaq üçün FileInputStream-dən istifadə edə bilərik.

Hiyerarşi

Java-da FileInputStream

İnşaatçılar

Java-dakı FileInputStream aşağıdakılara malikdir inşaatçılar:

konstruktortəsvir
FileInputStream (Fayl f)Müəyyən edilmiş sənəddən məlumatları oxumaq üçün giriş faylı axını yaradır.
FileInputStream (FileDescriptor fd)Müəyyən edilmiş fayl təsvirini oxumaq üçün bir fayl giriş axını yaradır
FileInputStream (String adı)Adı ilə göstərilən bir fayldan məlumatları oxumaq üçün giriş faylı axını yaradır

Java FileInputStream metodları

Üsultəsvir
int mövcuddur ()Fayldan oxumaq üçün mövcud baytların sayını təxmin edir
boşluq yaxın ()Göstərilən faylı bağlayır
FileChannel getChannel ()Müəyyən edilmiş faylla əlaqəli unikal FileChannel-i qaytarır
FileDescriptor getFD ()Müəyyən edilmiş sənədlə əlaqə qurmaq üçün əlaqəli FileDescriptor-u qaytarır
boş işarəsi (int readLimit)Giriş faylındakı mövcud vəziyyəti qeyd edir
boolean marka dəstəklənir ()Faylın mark () və sıfırlama () metodlarını dəstəklədiyini yoxlayır.
int oxumaq ()Giriş axınından bir bayt məlumat oxuyur
int oxumaq (bayt [] b)Fayldan verilənlərin uzunluğu baytlara qədər oxuyur
int oxumaq (bayt [] b, int off, int len)Giriş axınından ofsetdən məlumatların len baytına qədər oxuyur
bayt [] readAllBytes ()Giriş axınından qalan bütün bayt məlumatları oxuyur
bayt [] readNBytes (int len)Giriş axınından müəyyən sayda bayta qədər oxuyur
int readNBytes (bayt [] b, int off, int len)Giriş axınından göstərilən bayt sayına qədər oxuyur
uzun atla (uzun n)Giriş axınından n bayt sayını atlayır və atır
boş skipNBytes (uzun n)Giriş axınından tam sayda bayt atlayır və atır.
uzun transferTo (Çıxış axınında)InputStream-dən OutputStream-ə qədər olan bütün baytları oxuduğu qaydada oxuyur və yazır

Nümunə: Fayldan tək bir simvol oxuyun

Aşağıdakı nümunə giriş faylından bir simvolun necə oxunacağını göstərir. Hər dəfə bir simvol oxuyan FileInputStream sinifinin read () metodundan istifadə edə bilərik. Çap etmək üçün dəyəri char-a yaza bilərik. Girişdən bəri fayl “Java proqramlaşdırma” məzmununu ehtiva edir, ilk “J” simvolunu çıxış olaraq yazdırır.

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class ReadFile {

  public static void main(String[] args) throws IOException {
    try {
      FileInputStream fi = new FileInputStream("InputFile.txt");
      int a = fi.read();
      System.out.println((char)a);
      fi.close();
      
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    }
    
  }

}
J

Giriş faylındakı məzmun

Giriş FaylPin

Nümunə: Fayldakı bütün simvolları oxuyun

Aşağıdakı nümunədə read () metodundan istifadə edərək giriş sənədindəki bütün simvolları oxuyuruq. Read () metodunu hər dəfə çağırdıqda, tək bir simvol oxuyur. Beləliklə isə loop, bu metod faylın sonu olan -1 qayıdana qədər məlumatları oxuya bilərik.

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class ReadFile {

  public static void main(String[] args) throws IOException {
    try {
      FileInputStream fi = new FileInputStream("InputFile.txt");
      int a = 0;
      while((a=fi.read()) != -1)
        System.out.print((char)a);
      fi.close();
      
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    }
    
  }

}
Java programming

Misal: available () metodu

Aşağıdakı nümunə read () əməliyyatından əvvəl və sonra mövcud () metodunun işləməsini göstərir. 4 simvol oxuduğumuz üçün qalan baytların sayı 4 azalır.

import java.io.FileInputStream;
import java.io.IOException;

public class CheckAvailableBytes {

  public static void main(String[] args) throws IOException {
    FileInputStream fi = new FileInputStream("InputFile.txt");
    int a = 0;
    
    System.out.println("Available bytes before read operation: " + fi.available());
    System.out.print((char)fi.read());
    System.out.print((char)fi.read());
    System.out.print((char)fi.read());
    System.out.print((char)fi.read());
    
    System.out.println("\nAvailable bytes after read operation: " + fi.available());
    fi.close();

  }

}
Available bytes before read operation: 16
Java
Available bytes after read operation: 12

Misal: skip () metodu

Göstərilən sayda baytı atlaya və skip () metodundan istifadə edərək FileInputStream-dən qalan məzmunu oxuya bilərik. Aşağıdakı nümunə 4 baytı atlayır və qalan məlumatları yazdırır. Giriş faylı “Java proqramlaşdırma” məlumatını ehtiva edir. Beləliklə, 4 bayt məlumatı atladıqdan sonra yalnız "proqramlaşdırma" yazdırır.

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class SkipDemo {

  public static void main(String[] args) throws FileNotFoundException {
    FileInputStream fi = new FileInputStream("InputFile.txt");
    
    try {
      fi.skip(4);
      System.out.println("Contents after skipping 4 bytes:");
      int a = 0;
      while((a=fi.read()) != -1)
        System.out.print((char)a);
      fi.close();
      
    } catch (IOException e) {
      e.printStackTrace();
    }
    

  }

}
Contents after skipping 4 bytes:
 programming

Misal: FileDescriptor getFD () metodu

GetFD () üsul Java-dakı FileInputStream sinifinin, faylla əlaqəni quran FileDescriptor obyektini qaytarır. Aşağıdakı nümunə, sənədin etibarlı olub olmadığını yoxlayır və FileDescriptorun etibarlı () metodundan istifadə etmir.

import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.IOException;

public class FileDescriptorDemo {

  public static void main(String[] args) throws IOException {
    FileInputStream fi = new FileInputStream("InputFile.txt");
    FileDescriptor fd = fi.getFD();
    System.out.println("Valid file: " + fd.valid());
  }

}
Valid file: true

Misal: FileChannel getChannel () metodu

Aşağıdakı misal getChannel () metodundan istifadə edərək cari vəziyyətin necə alınacağını göstərir. Read () metodundan istifadə edərək bir simvol oxuduğumuz zaman mövqe 1-ə qədər artır.

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.channels.FileChannel;

public class FileChannelDemo {

  public static void main(String[] args) throws IOException {
    try {
      FileInputStream fi = new FileInputStream("InputFile.txt");
      System.out.println("Number of available bytes: " + fi.available());
      int a;
      while((a=fi.read()) != -1) {
        FileChannel fc = fi.getChannel();
        System.out.print("Current position: " + fc.position());
        System.out.println("\tCharacter: " + (char)a);
      }			
      fi.close();
      
      
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    }	

  }

}
Number of available bytes: 16
Current position: 1	Character: J
Current position: 2	Character: a
Current position: 3	Character: v
Current position: 4	Character: a
Current position: 5	Character:  
Current position: 6	Character: p
Current position: 7	Character: r
Current position: 8	Character: o
Current position: 9	Character: g
Current position: 10	Character: r
Current position: 11	Character: a
Current position: 12	Character: m
Current position: 13	Character: m
Current position: 14	Character: i
Current position: 15	Character: n
Current position: 16	Character: g

Nümunə: Müəyyən simvol sayını oxuyun

Aşağıdakı nümunədə giriş faylı “Java proqramlaşdırma” mətnini ehtiva edir. Başlanğıc mövqeyini ofset parametri və uzunluğu kimi oxunacaq simvol sayını təyin edə biləcəyimiz read () metodundan istifadə edərək müəyyən simvolları oxuya bilərik. Bu nümunədə ofset 0, uzunluq 6-dır, yəni 0 mövqeyindən 6 işarəyə qədər olan simvolları oxuyur. Tutumu 12 olduğu üçün qalan 6 baytı * kimi doldurur.

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class ReadSpecificCharacters {

  public static void main(String[] args) throws IOException {
    try {
      FileInputStream fi = new FileInputStream("InputFile.txt");
      byte[] b = new byte[12];
      int a = fi.read(b, 0, 6);
      System.out.println("Total number of bytes: "+ fi.available());
      System.out.println("Number of bytes read: " + a);
      
      for(byte by : b) {
        char ch = (char)by;
        if(by == 0)
          ch = '*';
        System.out.print(ch);
      }
        
      fi.close();
      
      
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    }
    

  }

}
Total number of bytes: 10
Number of bytes read: 6
Java p******

 

arayış

Crack Sistemi Dizayn Müsahibələri
Translate »