Video: Java 26 - Dosyalar ve API 2024
Birçok Java programı bilgisayarın klavyesinden karakterleri okuyor. Bu programlar Tarayıcı, Sistem gibi şeyler kullanır. in ve nextDouble - şeyleri Java'nın API'sinde tanımlanmıştır. Bu listedeki DoPayroll programı bu hikayeye yeni bir bakış açısı getiriyor. Klavyeden karakter okumak yerine, Program EmployeeInfo karakterlerini okur. txt dosyası. Dosya bilgisayarınızın sabit diskinde yaşıyor.
import java. util. Tarayıcı; import java. io. Dosya; import java. io. IOException; kamu sınıfı DoPayroll {public static void main (Dizge args []) IOException'u atar {Scanner diskScanner = yeni Tarayıcı (yeni Dosya ("EmployeeInfo. txt")); için (int empNum = 1; empNum <= 3; empNum ++) {payOneEmployee (diskScanner);} diskScanner. close ();} statik void payOneEmployee (Tarayıcı aScanner) {Çalışan anEmployee = yeni Çalışan (); bir işçi. setName (aScanner. nextLine ()); bir işçi. setJobTitle (aScanner. nextLine ()); bir işçi. cutCheck (aScanner. nextDouble ()); aScanner. nextLine ();}}
Bir dosyadaki karakterleri okumak için, klavyeden karakterleri okumanıza yardımcı olan bazı şeyleri kullanırsınız. Tarayıcı, sonraki Oku ve diğer güzel şeyleri kullanırsınız. Ancak bu güzelliklere ek olarak, atlamak için birkaç ek engeliniz var. İşte bir liste:
-
Bir yeni File nesnesine ihtiyacınız var. Daha kesin olmak için, API'ın File sınıfının yeni bir örneğine ihtiyacınız var. Bu yeni örneği,
yeni Dosya ("EmployeeInfo. Txt")
gibi bir kodla alırsınız. Tırnak işaretleri içindeki şeyler bir dosyanın adıdır - bilgisayarınızın sabit sürücüsündeki bir dosyadır. Dosya karakter içeriyor.
Bu noktada, terminoloji dağları köstebek tepelerinde bırakıyor. Tabii ki, yeni Dosya nesnesi ve yeni Dosya örneği ifadeleri , olarak görünür; ancak yaptığınız tek şey, yeni File ("EmployeeInfo. Txt") standı oluşturmaktır. sabit diskinizdeki bir dosya. Yeni Dosya ("EmployeeInfo. Txt") 'yi yeni Tarayıcıya yerleştirdikten sonra
Tarayıcı diskScanner = yeni Tarayıcı (new File ("EmployeeInfo. Txt"));
Yeni Dosya işiyle ilgili her şeyi unutabilirsiniz. Bu noktadan itibaren kodda diskScanner, Çalışan Bilgisi'ni ifade eder. txt dosya adı bilgisayarınızın sabit diskinde. (DiskScanner adı, önceki örneklerde olduğu gibi, sabit diskinizdeki bir dosyanın adıdır; adı klavye, gündüz ve gündüz basan düğmeler anlamına gelir.
Listede yeni bir File nesnesi oluşturmak, daha sonra aynı listede yeni bir Çalışan nesnesi oluşturmak gibi. Tek fark, bu kitabın örneklerinde Çalışan ve Hesap sınıflarının tanımlanmasıdır.File sınıfı Java API'sında tanımlanmıştır.
Yeni bir Tarayıcı ile bir disk dosyasına bağlandığınızda, yeni Dosya bölümünü unutmayın. Yeni Tarayıcı ("EmployeeInfo. Txt") dosyasını yeni bir dosya olmadan yazarsanız, derleyici bir sakıncası olmayacaktır. (Kodu çalıştırmadan önce herhangi bir uyarı veya hata iletisi almazsınız.) Ancak kodu çalıştırdığınızda, elde etmeyi beklediğiniz sonuçlar gibi bir şey almazsınız.
-
Dosya sınıfına tam adıyla - java başvurmalısınız. io. Dosya. Listedeki listeye benzer bir ithalat bildirimi ile bunu yapabilirsiniz. Alternatif olarak, kodunuzu
Scanner diskScanner = yeni Tarayıcı (yeni java.io. Dosya ("EmployeeInfo. Txt") gibi) ile örtüştürebilirsiniz;
-
IOException yan tümcelerine bir atmanız gerekir. Programınız EmployeeInfo'a bağlandığında pek çok şey yanlış gidebilir. Txt. Bir kere, sabit sürücünüz EmployeeInfo adlı bir dosyaya sahip olmayabilir. Txt.
-
Başka biri için EmployeeInfo dosyası. txt yanlış dizinde olabilir. Bu tür felakete kapılmak için Java programlama dili bazı önlemler alır. Dil, bir disk dosyası dahil olduğunda, yeni Tarayıcı'yı aramanın olası tehlikelerini kabul ettiğinizde ısrarcı.
Tehlikeleri birkaç olası şekilde kabul edebilirsiniz, ancak en basit yol bir throws yan tümcesini kullanmaktır. Listede ana yöntemin başlığı kelimeleri ile biter ve IOException atar. Bu iki kelimeyi ekleyerek, Java derleyicisini rahatlattırabilirsiniz.
Sanki "Tarayıcı'yı aramanın sorunlara neden olabileceğini biliyorum" dediysen. Bana hatırlatmak zorunda değilsin. "Ve tabii ki, ana yönteminize IOException atıyor ekleme derleyiciyi şikayet etmiyor. (Bu throws clause olmadan, rapor edilmemiş bir istisna hata mesajı alırsınız.)