tek4

Lớp FileInputStream trong Java

by - September. 25, 2021
Kiến thức
Học
Công nghệ
<p>Trong b&agrave;i viết n&agrave;y, ch&uacute;ng ta sẽ c&ugrave;ng t&igrave;m hiểu về lớp FileInputStream trong Java v&agrave; c&aacute;c phương thức của n&oacute; c&ugrave;ng với sự trợ gi&uacute;p của c&aacute;c v&iacute; dụ dẫn chứng.</p> <p>Lớp FileInputStream của g&oacute;i java.io c&oacute; thể được sử dụng để đọc dữ liệu (t&iacute;nh ở dạng byte) từ tệp. N&oacute; kế thừa lớp trừu tượng InputStream.</p> <h2>Tạo một FileInputStream</h2> <p>Để tạo FileInputStream, trước ti&ecirc;n ch&uacute;ng ta phải th&ecirc;m g&oacute;i java.io.FileInputStream. V&agrave; sau đ&acirc;y l&agrave; hai c&aacute;ch m&agrave; ch&uacute;ng ta c&oacute; thể tạo FileInputStream trong Java.</p> <h3>1. Sử dụng đường dẫn đến file</h3> <pre class="language-java"><code>FileInputStream a = new FileInputStream(path);</code></pre> <p>Ở đ&acirc;y, ch&uacute;ng ta đ&atilde; tạo một luồng đầu v&agrave;o sẽ được li&ecirc;n kết với tệp được chỉ định bởi đường dẫn.</p> <h3>2. Sử dụng một đối tượng của File</h3> <pre class="language-java"><code>FileInputStream a = new FileInputStream(File obj);</code></pre> <p>Ở đ&acirc;y, ch&uacute;ng ta đ&atilde; tạo một luồng đầu v&agrave;o sẽ được li&ecirc;n kết với tệp được chỉ định bởi doi_tuong.</p> <h2>Phương thức của lớp FileInputStream</h2> <p>Lớp FileInputStream cung cấp c&aacute;c triển khai cho c&aacute;c phương thức kh&aacute;c nhau c&oacute; trong lớp InputStream.</p> <h3>1. Phương thức read()</h3> <ul> <li>Phương thức read(): Đọc một byte từ file.</li> <li>Phương thức read(byte [] array): Đọc c&aacute;c byte từ tệp v&agrave; lưu trữ trong mảng được chỉ định.</li> <li>Phương thức read(byte [] array, int start, int length): Đọc số lượng byte bằng chiều d&agrave;i của tệp v&agrave; lưu trữ trong mảng được chỉ định bắt đầu từ vị tr&iacute; start.</li> </ul> <p>V&iacute; dụ:</p> <p>Giả sử ch&uacute;ng ta c&oacute; một tệp c&oacute; t&ecirc;n tek4.txt với nội dung như sau.</p> <pre class="language-markup"><code>Tim hieu ve lap trinh trong Java</code></pre> <p>Ta sẽ thực hiện việc đọc nội dung từ file tek4.txt với đoạn m&atilde; như sau.</p> <pre class="language-java"><code>import java.io.FileInputStream; public class Main { public static void main(String args[]) { try { FileInputStream dau_vao = new FileInputStream("tek4.txt"); int i = dau_vao.read(); while(i != -1) { System.out.print((char)i); i = dau_vao.read(); } dau_vao.close(); } catch(Exception e) { e.getStackTrace(); } } }</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>Tim hieu ve lap trinh trong Java cung voi tek4</code></pre> <p>Trong v&iacute; dụ tr&ecirc;n, ch&uacute;ng ta đ&atilde; tạo một luồng nhập c&oacute; t&ecirc;n l&agrave; dau_vao. Luồng đầu v&agrave;o được li&ecirc;n kết với tệp tek4.txt.</p> <pre class="language-java"><code>FileInputStream dau_vao = new FileInputStream("tek4.txt");</code></pre> <p>Để đọc dữ liệu từ tệp, ch&uacute;ng ta đ&atilde; sử dụng phương thức read() b&ecirc;n trong v&ograve;ng lặp while.</p> <h3>2. Phương thức available()</h3> <p>Để t&iacute;nh số lượng c&aacute;c byte c&ograve;n dư, ch&uacute;ng ta c&oacute; thể sử dụng phương thức available().</p> <p>V&iacute; dụ:</p> <pre class="language-java"><code>import java.io.FileInputStream; public class Main { public static void main(String args[]) { try { FileInputStream dau_vao = new FileInputStream("tek4.txt"); System.out.println("So luong Byte ban dau: " + dau_vao.available()); dau_vao.read(); dau_vao.read(); dau_vao.read(); System.out.println("So luong Byte luc sau: " + dau_vao.available()); dau_vao.close(); } catch (Exception e) { e.getStackTrace(); } } }</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>So luong Byte ban dau: 46 So luong Byte luc sau: 43</code></pre> <p>Trong v&iacute; dụ tr&ecirc;n:</p> <ul> <li>Trước ti&ecirc;n, ch&uacute;ng ta sử dụng phương thức available() để kiểm tra số lượng byte c&oacute; sẵn trong luồng đầu v&agrave;o.</li> <li>Sau đ&oacute;, ch&uacute;ng ta đ&atilde; sử dụng phương thức read() 3 lần để đọc 3 byte từ luồng đầu v&agrave;o tệp. Sau khi đọc c&aacute;c byte, ch&uacute;ng ta kiểm tra c&aacute;c byte c&oacute; sẵn c&ograve;n lại. Lần n&agrave;y số byte c&oacute; sẵn đ&atilde; giảm đi 3 byte.</li> </ul> <h3>3. Phương thức skip()</h3> <p>Để loại bỏ v&agrave; bỏ qua số byte được chỉ định, ch&uacute;ng ta c&oacute; thể sử dụng phương thức skip().</p> <p>V&iacute; dụ:</p> <pre class="language-java"><code>import java.io.FileInputStream; public class Main { public static void main(String args[]) { try { FileInputStream dau_vao = new FileInputStream("tek4.txt"); dau_vao.skip(11); int i = dau_vao.read(); while (i != -1) { System.out.print((char) i); i = dau_vao.read(); } dau_vao.close(); } catch (Exception e) { e.getStackTrace(); } } }</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>lap trinh trong Java cung voi tek4</code></pre> <p>Trong v&iacute; dụ tr&ecirc;n, ch&uacute;ng ta đ&atilde; sử dụng phương thức skip() để bỏ qua 5 byte dữ liệu từ luồng đầu v&agrave;o.</p> <h3>4. Phương thức close()</h3> <p>Để đ&oacute;ng luồng đầu v&agrave;o, ch&uacute;ng ta c&oacute; thể sử dụng phương thức close(). Khi phương thức close() được gọi, ch&uacute;ng ta kh&ocirc;ng thể sử dụng luồng đầu v&agrave;o để đọc dữ liệu. Trong tất cả c&aacute;c v&iacute; dụ tr&ecirc;n, ch&uacute;ng ta đ&atilde; sử dụng phương thức close() để đ&oacute;ng luồng đầu v&agrave;o sau khi đọc xong dữ liệu.</p> <h3>5. C&aacute;c phương thức kh&aacute;c</h3> <table width="787"> <tbody> <tr> <td style="text-align: center;">Phương thức</td> <td style="text-align: center;">M&ocirc; tả</td> </tr> <tr> <td>finalize()</td> <td>Đảm bảo phương thức close() được gọi.</td> </tr> <tr> <td>getChannel()</td> <td>Trả về đối tượng FileChannel li&ecirc;n kết với luồng đầu v&agrave;o.</td> </tr> <tr> <td>getFD()</td> <td>Trả về file Descriptor li&ecirc;n kết với luồng đầu v&agrave;o.</td> </tr> <tr> <td>mark()</td> <td>Đ&aacute;nh dấu vị tr&iacute; trong luồng đầu v&agrave;o m&agrave; dữ liệu sẽ được đọc tới.</td> </tr> <tr> <td>reset()</td> <td>Trả về control tới điểm trong luồng đầu v&agrave;o m&agrave; vị tr&iacute; đ&atilde; được đ&aacute;nh dấu.</td> </tr> </tbody> </table> <p>Tr&ecirc;n đ&acirc;y l&agrave; kh&aacute;i niệm v&agrave; v&iacute; dụ cơ bản về lớp FileInputStream trong Java. Hy vọng mọi người c&oacute; thể &aacute;p dụng v&agrave;o trong chương tr&igrave;nh của m&igrave;nh. Mọi người h&atilde;y tiếp tục theo d&otilde;i c&aacute;c b&agrave;i tiếp theo v&agrave; cập nhật c&aacute;c b&agrave;i mới nhất tr&ecirc;n <a href="http://tek4.vn">tek4</a> nh&eacute;!</p>