Skip to main content

Файлове - Четене и Писане

Работа с Файлове в Java

Java предлага множество класове и методи за работа с файлове, което позволява четенето, писането и обработката на файлови данни по ефективен и удобен начин.

Създаване на Файлове

В Java, файлове могат да бъдат създадени използвайки класа File. Класът File не създава физически файл, а представя пътя към файл във файловата система.

Пример за Създаване на Файл:

import java.io.File;
import java.io.IOException;

public class CreateFileExample {
public static void main(String[] args) {
try {
File моятФайл = new File("име-на-файла.txt");
if (моятФайл.createNewFile()) {
System.out.println("Файлът е създаден: " + моятФайл.getName());
} else {
System.out.println("Файлът вече съществува.");
}
} catch (IOException грешка) {
System.out.println("An error occurred.");
грешка.printStackTrace();
}
}
}

Четене на Файлове

За четене на файлове в Java, често се използват класовете FileReader, BufferedReader и Scanner.

Пример за Четене на Файл:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class FileReadingExample {
public static void main(String[] args) {
try (BufferedReader четец = new BufferedReader(new FileReader("example.txt"))) {
String ред;
while ((ред = четец.readLine()) != null) {
System.out.println(ред);
}
} catch (IOException грешка) {
грешка.printStackTrace();
}
}
}

Писане във Файлове

За писане във файлове, FileWriter и BufferedWriter са често използваните класове.

Пример за Писане във Файл:

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class FileWritingExample {
public static void main(String[] args) {
try (BufferedWriter писател = new BufferedWriter(new FileWriter("output.txt"))) {
писател.write("Hello, Java!");
} catch (IOException грешка) {
грешка.printStackTrace();
}
}
}

Обработка на Файлове

Java предоставя класа File за основна обработка на файлове, като проверка за съществуването на файл, получаване на размера на файла, изтриване на файл и т.н.

Пример за Обработка на Файл:

import java.io.File;

public class FileHandlingExample {
public static void main(String[] args) {
File файл = new File("example.txt");

if (файл.exists()) {
System.out.println("Файлът съществува");
System.out.println("Размер на файла: " + file.length());
}

// Изтриване на файл
if (файл.delete()) {
System.out.println("Файлът е изтрит");
}
}
}

Разбира се, ще добавим секции за създаване на файлове, както и за байтови и знакови потоци (буферирани и небуферирани) към теоретичната част на лекцията за работа с файлове в Java.

Байтови и Знакови Потоци

В Java, потоците за работа с файлове се разделят на байтови (InputStream и OutputStream) и знакови потоци (Reader и Writer).

Байтови Потоци

Байтовите потоци (например FileInputStream, FileOutputStream) се използват за четене и писане на двоични данни (например, изображения).

Знакови Потоци

Знаковите потоци (например FileReader, FileWriter) са предназначени за работа с текстови файлове. Те четат и пишат текст, като автоматично се справят със символната кодировка.

Буферирани и Небуферирани Потоци

Буферирани Потоци

Буферираните потоци (например BufferedReader, BufferedWriter) използват буфер за оптимизиране на входно-изходните операции. Това намалява взаимодействието със самия файл и повишава производителността.

Небуферирани Потоци

Небуферираните потоци извършват четене и писане директно от или във файла. Това може да бъде по-бавно в сравнение с буферираните потоци, тъй като всеки път се извършва операция с физическото устройство.

Заключение

Работата с файлове е фундаментална част от програмирането в Java. Познаването на различните класове и методи, които Java предоставя за четене, писане и обработка на файлове, е от съществено значение за всеки Java разработчик. С практиката идва и умението да се използват тези инструменти по ефективен и безопасен начин.