طرق متعددة لقراءة الملفات في جافا 1. قراءة محتويات الملف بطرق متعددة.
1. قراءة محتويات الملف بالبايت
2. قراءة محتوى الملف حسب الحرف
3. اقرأ محتويات الملف سطراً سطراً
4. قراءة محتويات الملف بشكل عشوائي
*/
import java.io.BufferedReader;
استيراد java.io.File؛
استيراد java.io.FileInputStream؛
استيراد java.io.FileReader؛
import java.io.IOException;
استيراد java.io.InputStream؛
استيراد java.io.InputStreamReader؛
import java.io.RandomAccessFile;
استيراد java.io.Reader؛
الطبقة العامة ReadFromFile {
/**
* قراءة الملفات بالبايت، وغالبًا ما تستخدم لقراءة الملفات الثنائية، مثل الصور والأصوات والصور وما إلى ذلك.
*param fileName اسم الملف
*/
قراءة الفراغ الثابت العام (String fileName) {
ملف الملف = ملف جديد (اسم الملف)؛
InputStream in = null;
يحاول {
System.out.println("اقرأ محتوى الملف بالبايت، بايت واحد في كل مرة:");
// اقرأ بايتًا واحدًا في كل مرة
in = new FileInputStream(file);
كثافة العمليات بايت؛
بينما((tempbyte=in.read()) != -1){
System.out.write(tempbyte);
}
in. Close();
} قبض (IOException ه) {
printStackTrace();
يعود؛
}
يحاول {
System.out.println("اقرأ محتوى الملف بالبايت، بايتات متعددة في المرة الواحدة:");
// قراءة بايتات متعددة في وقت واحد
بايت[] تيمبايت = بايت جديد[100];
كثافة العمليات بايتريد = 0;
in = new FileInputStream(fileName);
ReadFromFile.showAvailableBytes(in);
// اقرأ عدة بايتات في مصفوفة البايت، بايتيريد هو عدد البايتات المقروءة في وقت واحد
بينما ((byteread = in.read(tempbytes)) != -1){
System.out.write(tempbytes, 0, byteread);
}
} قبض (الاستثناء e1) {
e1.printStackTrace();
} أخيراً {
إذا (في!= فارغة){
يحاول {
in. Close();
} التقاط (IOException e1) {
}
}
}
}
/**
* قراءة الملفات بوحدات الأحرف، والتي تُستخدم غالبًا لقراءة النصوص والأرقام وأنواع الملفات الأخرى
*param fileName اسم الملف
*/
قراءة الفراغ الثابت العام (String fileName) {
ملف الملف = ملف جديد (اسم الملف)؛
القارئ القارئ = فارغ؛
يحاول {
System.out.println("اقرأ محتوى الملف بوحدات الأحرف، بايت واحد في كل مرة:");
// اقرأ حرفًا واحدًا في كل مرة
Reader = new InputStreamReader(new FileInputStream(file));
int tempchar;
بينما ((tempchar = Reader.read()) != -1){
// بالنسبة لنظام التشغيل Windows، عندما يكون الحرفان rn معًا، فإنهما يمثلان سطرًا جديدًا.
// ولكن إذا تم عرض هذين الحرفين بشكل منفصل، فسيتم تغيير الخط مرتين.
// لذلك، درع ص، أو درع ن. خلاف ذلك، سيكون هناك الكثير من الأسطر الفارغة.
إذا (((شار)tempchar) != 'r'){
System.out.print((char)tempchar);
}
}
Reader.Close();
} قبض (الاستثناء ه) {
printStackTrace();
}
يحاول {
System.out.println("اقرأ محتوى الملف بوحدات الأحرف، بايتات متعددة في المرة الواحدة:");
// اقرأ عدة أحرف في وقت واحد
char[] tempchars = new char[30];
كثافة العمليات charread = 0;
Reader = new InputStreamReader(new FileInputStream(fileName));
// اقرأ عدة أحرف في مصفوفة الأحرف، charread هو عدد الأحرف المقروءة في المرة الواحدة
بينما ((charread = Reader.read(tempchars))!=-1){
// وبالمثل، قم بحماية r من العرض
إذا ((charread == tempchars.length)&&(tempchars[tempchars.length-1] != 'r')){
System.out.print(tempchars);
}آخر{
لـ (int i=0; i<charread; i++){
إذا (tempchars[i] == 'r'){
يكمل؛
}آخر{
System.out.print(tempchars[i]);
}
}
}
}
} قبض (الاستثناء e1) {
e1.printStackTrace();
}أخيراً {
إذا (القارئ != فارغ){
يحاول {
Reader.Close();
} التقاط (IOException e1) {
}
}
}
}
/**
* قراءة الملفات بوحدات سطرية، وغالبًا ما تستخدم لقراءة الملفات ذات التنسيق الخطي
*param fileName اسم الملف
*/
قراءة الفراغ الثابت العام (String fileName) {
ملف الملف = ملف جديد (اسم الملف)؛
قارئ BufferedReader = null;
يحاول {
System.out.println("اقرأ محتوى الملف بوحدات السطر، واقرأ سطرًا كاملاً في كل مرة:");
Reader = new BufferedReader(new FileReader(file));
String tempString = null;
سطر صحيح = 1؛
// اقرأ سطرًا واحدًا في كل مرة حتى تتم قراءة القيمة الخالية كنهاية الملف
بينما ((tempString = Reader.readLine()) != null){
//عرض رقم السطر
System.out.println("line " + line + ": " + tempString);
السطر++;
}
Reader.Close();
} قبض (IOException ه) {
printStackTrace();
} أخيراً {
إذا (القارئ != فارغ){
يحاول {
Reader.Close();
} التقاط (IOException e1) {
}
}
}
}
/**
* قراءة محتويات الملف بشكل عشوائي
*param fileName اسم الملف
*/
قراءة الفراغ الثابت العام readFileByRandomAccess(String fileName){
RandomAccessFile RandomFile = null;
يحاول {
System.out.println("قراءة محتوى ملف عشوائي:");
// افتح دفق ملف الوصول العشوائي في وضع القراءة فقط
RandomFile = new RandomAccessFile(fileName, "r");
// طول الملف، عدد البايتات
long fileLength = RandomFile. length();
// اقرأ موضع البداية للملف
int beginIndex = (fileLength > 4) ?
// انقل موضع البداية لملف القراءة إلى موضع beginIndex.
RandomFile.seek(beginIndex);
بايت[] بايت = بايت جديد[10];
كثافة العمليات بايتريد = 0;
// اقرأ 10 بايت في المرة الواحدة، إذا كان محتوى الملف أقل من 10 بايت، فاقرأ البايتات المتبقية.
// قم بتعيين عدد البايتات المقروءة في المرة الواحدة لـ byteread
بينما ((byteread = RandomFile.read(bytes)) != -1){
System.out.write(bytes, 0, byteread);
}
} مسك (IOException e){
printStackTrace();
} أخيراً {
إذا (ملف عشوائي != فارغ){
يحاول {
RandomFile.Close();
} التقاط (IOException e1) {
}
}
}
}
/**
* عرض عدد البايتات المتبقية في دفق الإدخال
* @param في
*/
عرض الفراغ الثابت الخاصAvailableBytes(InputStream in){
يحاول {
System.out.println("عدد البايتات في دفق إدخال البايت الحالي هو:" + in.available());
} قبض (IOException ه) {
printStackTrace();
}
}
public static void main(String[] args) {
String fileName = "C:/temp/newTemp.txt";
ReadFromFile.readFileByBytes(fileName);
ReadFromFile.readFileByChars(fileName);
ReadFromFile.readFileByLines(fileName);
ReadFromFile.readFileByRandomAccess(fileName);
}
}
2. إلحاق المحتوى بنهاية الملف
import java.io.FileWriter;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* إلحاق المحتوى بنهاية الملف
*/
الطبقة العامة AppendToFile {
/**
*طريقة لإلحاق الملفات: استخدم RandomAccessFile
*param fileName اسم الملف
* @param محتوى محتوى إضافي
*/
appendMethodA (اسم ملف السلسلة،
محتوى السلسلة){
يحاول {
// فتح دفق ملف الوصول العشوائي، في وضع القراءة والكتابة
RandomAccessFile RandomFile = new RandomAccessFile(fileName, "rw");
// طول الملف، عدد البايتات
long fileLength = RandomFile. length();
// حرك مؤشر ملف الكتابة إلى نهاية الملف.
RandomFile.seek(fileLength);
RandomFile.writeBytes(content);
RandomFile.Close();
} مسك (IOException e){
printStackTrace();
}
}
/**
* الطريقة ب لإلحاق الملفات: استخدم FileWriter
* @param اسم الملف
* محتوىparam
*/
public static void appendMethodB(String fileName, String content){
يحاول {
// فتح كاتب ملف. المعلمة الثانية الصحيحة في المنشئ تعني كتابة الملف في نموذج الإلحاق.
FileWriterwriter = new FileWriter(fileName, true);
Writer.write(content);
الكاتب. قريب ()؛
} قبض (IOException ه) {
printStackTrace();
}
}
public static void main(String[] args) {
String fileName = "C:/temp/newTemp.txt";
محتوى السلسلة = "إلحاق جديد!"؛
// إلحاق الملفات وفقًا للطريقة أ
AppendToFile.appendMethodA(fileName, content);
AppendToFile.appendMethodA(fileName, "append end.n");
// عرض محتوى الملف
ReadFromFile.readFileByLines(fileName);
// إلحاق الملفات وفقًا للطريقة ب
AppendToFile.appendMethodB(fileName, content);
AppendToFile.appendMethodB(fileName, "append end.n");
// عرض محتوى الملف
ReadFromFile.readFileByLines(fileName);
}
}