tek4

Lớp FileReader và FileWriter trong Java

by - September. 26, 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 FileReader v&agrave; FileWriter trong Java v&agrave; c&aacute;c phương thức c&ugrave;ng với c&aacute;c v&iacute; dụ dẫn chứng.</p> <p>Lớp FileReader của g&oacute;i java.io c&oacute; thể được sử dụng để đọc dữ liệu (theo k&yacute; tự) từ c&aacute;c tệp. N&oacute; kế thừa lớp InputSreamReader.</p> <h2>Tạo một FileReader</h2> <p>Để tạo FileReader, trước ti&ecirc;n ch&uacute;ng ta phải th&ecirc;m g&oacute;i java.io.FileReader. Sau khi th&ecirc;m, sau đ&acirc;y l&agrave; c&aacute;ch ch&uacute;ng ta c&oacute; thể tạo FileReader.</p> <h3>1. Sử dụng t&ecirc;n của tệp</h3> <pre class="language-java"><code>FileReader input = new FileReader(String path);</code></pre> <p>Ở đ&acirc;y, ch&uacute;ng ta đ&atilde; tạo một FileReader sẽ được li&ecirc;n kết với tệp được chỉ định đường dẫn v&agrave; t&ecirc;n tệp.</p> <h3>2. Sử dụng đối tượng</h3> <pre class="language-java"><code>FileReader input = new FileReader(File a);</code></pre> <p>Ở đ&acirc;y, ch&uacute;ng ta đ&atilde; tạo một FileReader sẽ được li&ecirc;n kết với tệp được chỉ định bởi đối tượng của tệp. Trong v&iacute; dụ tr&ecirc;n, dữ liệu trong tệp được lưu trữ bằng một số m&atilde; h&oacute;a k&yacute; tự mặc định. Tuy nhi&ecirc;n, kể từ Java 11, ch&uacute;ng ta cũng c&oacute; thể chỉ định kiểu m&atilde; h&oacute;a k&yacute; tự (UTF-8 hoặc UTF-16) trong tệp.</p> <pre class="language-java"><code>FileReader input = new FileReader(String file, Charset cs);</code></pre> <p>Ở đ&acirc;y, ch&uacute;ng ta đ&atilde; sử dụng lớp Charset để chỉ định kiểu m&atilde; h&oacute;a k&yacute; tự của tr&igrave;nh đọc tệp.</p> <h2>C&aacute;c phương thức của FileReader</h2> <p>Lớp FileReader 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 Reader.</p> <h3>1. Phương thức read()</h3> <ul> <li>Phương thức read(): Đọc một k&yacute; tự.</li> <li>Phương thức read(char [] array): Đọc c&aacute;c k&yacute; tự v&agrave; lưu trữ trong mảng được chỉ định.</li> <li>Phương thức read(char [] array, int start, int length): Đọc số k&yacute; tự bằng gi&aacute; trị của length 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ụ: giả sử ch&uacute;ng ta c&oacute; một tệp t&ecirc;n tek4.txt với nội dung như sau.</p> <pre class="language-markup"><code>Lap trinh Java co ban</code></pre> <p>Ch&uacute;ng ta sẽ đọc nội dung của tệp v&agrave; in ra kết quả bằng đoạn m&atilde; như sau.</p> <pre class="language-java"><code>import java.io.FileReader; class Main { public static void main(String[] args) { char[] du_lieu = new char[100]; try { FileReader input = new FileReader("tek4.txt"); input.read(du_lieu); System.out.println(du_lieu); input.close(); } catch(Exception e) { e.getStackTrace(); } } }</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>Lap trinh Java co ban</code></pre> <p>Trong v&iacute; dụ tr&ecirc;n, ch&uacute;ng ta đ&atilde; tạo một FileReader c&oacute; t&ecirc;n l&agrave; input. FileReader được li&ecirc;n kết với tệp tek4.txt.</p> <pre class="language-java"><code>FileReader input = new FileReader("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().</p> <h3>2. Phương thức getEncoding()</h3> <p>Phương thức getEncoding() c&oacute; thể được sử dụng để lấy kiểu m&atilde; h&oacute;a được sử dụng để lưu trữ dữ liệu trong tệp.</p> <p>V&iacute; dụ:</p> <pre class="language-java"><code>import java.io.FileReader; import java.nio.charset.Charset; class Main { public static void main(String[] args) { try { FileReader input = new FileReader("tek4.txt"); System.out.println(input.getEncoding()); input.close(); } catch(Exception e) { e.getStackTrace(); } } }</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>UTF8</code></pre> <p>Trong v&iacute; dụ tr&ecirc;n, ch&uacute;ng ta đ&atilde; tạo FileReader t&ecirc;n l&agrave; input. input1 kh&ocirc;ng chỉ định kiểu m&atilde; h&oacute;a k&yacute; tự. Do đ&oacute;, phương thức getEncoding() trả về m&atilde; h&oacute;a k&yacute; tự mặc định l&agrave; UTF8.</p> <h3>3. Phương thức close()</h3> <p>Để đ&oacute;ng FileReader, 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ể đọc dữ liệu.</p> <h3>4. 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>ready()</td> <td>Kiểm tra xem đ&atilde; c&oacute; thể đọc tệp được hay chưa.</td> </tr> <tr> <td>mark()</td> <td>Đ&aacute;nh dấu vị tr&iacute; m&agrave; dữ liệu được đọc.</td> </tr> <tr> <td>reset()</td> <td>Trả về quyền kiểm so&aacute;t tại điểm được đ&aacute;nh dấu.</td> </tr> </tbody> </table> <h2>Lớp FileWriter</h2> <p>Lớp FileWriter của g&oacute;i java.io c&oacute; thể được sử dụng để ghi dữ liệu (theo k&yacute; tự) v&agrave;o tệp. N&oacute; kế thừa từ lớp OutputStreamWriter.</p> <h2>Tạo một FileWriter</h2> <p>Để tạo một FileWriter, trước ti&ecirc;n ch&uacute;ng ta phải th&ecirc;m g&oacute;i Java.io.FileWriter. Sau khi th&ecirc;m, sau đ&acirc;y l&agrave; c&aacute;ch ch&uacute;ng ta c&oacute; thể tạo FileWriter.</p> <h3>1. Sử dụng t&ecirc;n của tệp</h3> <pre class="language-java"><code>FileWriter output = new FileWriter(String path);</code></pre> <p>Ở đ&acirc;y, ch&uacute;ng ta đ&atilde; tạo một FileWriter sẽ được li&ecirc;n kết với tệp được chỉ định bởi đường dẫn cộng với t&ecirc;n của n&oacute;.</p> <h3>2. Sử dụng một đối tượng của tệp</h3> <pre class="language-java"><code>FileWriter input = new FileWriter (File a);</code></pre> <p>Ở đ&acirc;y, ch&uacute;ng ta đ&atilde; tạo một FileWriter sẽ được li&ecirc;n kết với tệp được chỉ định bởi đối tượng của tệp. Trong v&iacute; dụ tr&ecirc;n, dữ liệu được lưu trữ bằng một kiểu m&atilde; h&oacute;a k&yacute; tự mặc định. Tuy nhi&ecirc;n, kể từ Java 11, ch&uacute;ng ta cũng c&oacute; thể chỉ định kiểu m&atilde; h&oacute;a k&yacute; tự (UTF8 hoặc UTF16).</p> <pre class="language-java"><code>FileWriter input = new FileWriter(String path, Charset cs);</code></pre> <p>Ở đ&acirc;y, ch&uacute;ng ta đ&atilde; sử dụng lớp Charset để chỉ định kiểu m&atilde; h&oacute;a k&yacute; tự của FileWriter.</p> <h2>C&aacute;c phương thức của FileWriter</h2> <p>Lớp FileWriter 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 Writer.</p> <h3>1. Phương thức write()</h3> <ul> <li>Phương thức write(): Ghi một k&yacute; tự.</li> <li>Phương thức write(char [] array): Ghi c&aacute;c k&yacute; tự từ mảng được chỉ định.</li> <li>Phương thức write(String data): Ghi chuỗi được chỉ định.</li> </ul> <p>V&iacute; dụ:</p> <pre class="language-java"><code>import java.io.FileWriter; public class Main { public static void main(String args[]) { String du_lieu = "Lap trinh Java can ban"; try { FileWriter output = new FileWriter("tek4.txt"); output.write(du_lieu); output.close(); } catch (Exception e) { e.getStackTrace(); } } }</code></pre> <p>Kết quả trong tệp tek4.txt:</p> <pre class="language-markup"><code>Lap trinh Java can ban</code></pre> <p>Trong v&iacute; dụ tr&ecirc;n, ch&uacute;ng ta đ&atilde; tạo một FileWriter c&oacute; t&ecirc;n l&agrave; output. FileWriter được li&ecirc;n kết với tệp tek4.txt.</p> <pre class="language-java"><code>FileWriter output = new FileWriter("tek4.txt");</code></pre> <p>Để ghi dữ liệu v&agrave;o tệp, ch&uacute;ng ta đ&atilde; sử dụng phương thức write(). Ở đ&acirc;y, sau khi ch&uacute;ng ta chạy chương tr&igrave;nh, tệp tek4.txt chứa nội dung sau.</p> <pre class="language-markup"><code>Lap trinh Java can ban</code></pre> <h3>2. Phương thức getEncoding()</h3> <p>Phương thức getEncoding() c&oacute; thể được sử dụng để lấy kiểu m&atilde; h&oacute;a được sử dụng để ghi dữ liệu.</p> <p>V&iacute; dụ:</p> <pre class="language-java"><code>import java.io.FileWriter; public class Main { public static void main(String args[]) { try { FileWriter output = new FileWriter("tek4.txt"); System.out.println(output.getEncoding()); output.close(); } catch (Exception e) { e.getStackTrace(); } } }</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>UTF8</code></pre> <p>Trong v&iacute; dụ tr&ecirc;n, ch&uacute;ng ta đ&atilde; tạo FileWriter t&ecirc;n l&agrave; output. Output kh&ocirc;ng c&oacute; chỉ định kiểu m&atilde; h&oacute;a k&yacute; tự. Do đ&oacute;, phương thức getEncoding() sẽ trả về kiểu m&atilde; h&oacute;a k&yacute; tự mặc định l&agrave; UTF8.</p> <h3>3. Phương thức close()</h3> <p>Để đ&oacute;ng FileWriter, ch&uacute;ng ta c&oacute; thể sử dụng phương thức close(). Khi phương thức n&agrave;y được gọi, ch&uacute;ng ta kh&ocirc;ng thể ghi dữ liệu được nữa.</p> <h3>4. 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>flush()</td> <td>&Eacute;p buộc ghi tất cả dữ liệu hiện c&oacute; trong tr&igrave;nh ghi dữ liệu v&agrave;o điểm đ&iacute;ch.</td> </tr> <tr> <td>append()</td> <td>Ch&egrave;n k&yacute; tự được chỉ định v&agrave;o tr&igrave;nh ghi dữ liệ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 FileReader v&agrave; FileWriter 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>