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.
Mündəricat
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
İnşaatçılar
Java-dakı FileInputStream aşağıdakılara malikdir inşaatçılar:
konstruktor | tə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ı
Üsul | tə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
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******
