I Java finns det flera sätt att läsa en textfil beroende på din datastorlek och användningsfall. De java.io och java.nio.file-paket tillhandahålla flera klasser för att hantera filläsning effektivt. Låt oss diskutera de vanliga tillvägagångssätten en efter en.
1. Använda klassen BufferedReader
Bufferad Reader klass läser text från en teckenström och buffrar tecknen för effektiv läsning. Det är ofta virat runt en FileReader eller InputStreamReader för att förbättra prestandan.
Syntax
JavaBufferedReader in = new BufferedReader(Reader int size);
import java.io.*; public class UsingBufferReader { public static void main(String[] args) throws Exception{ // Creating BufferedReader for Input BufferedReader bfri = new BufferedReader( new InputStreamReader(System.in)); System.out.print('Enter the Path : '); // Reading File name String path = bfri.readLine(); BufferedReader bfro = new BufferedReader(new FileReader(path)); String st; while ((st = bfro.readLine()) != null) System.out.println(st); } }
Produktion
Produktion2. FileReader-klass för att läsa textfil
De FileReader-klassen används för att läsa textfiler i Java. Den läser tecken från en fil och är lämplig för att läsa vanlig text. Konstruktörerna för denna klass antar att standardteckenkodningen och standardbytebuffertstorleken är lämpliga.
Konstruktörer som definieras i denna klass är följande:
- FileReader (filfil): Skapar en ny FileReader med tanke på filen att läsa från
- FileReader(FileDescriptor fd): Skapar en ny FileReader som får FileDescriptor att läsa från
- FileReader(String filnamn): Skapar en ny FileReader med namnet på filen att läsa från
import java.io.*; public class UsingFileReader { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print('Enter the Path : '); // Reading File name String path = br.readLine(); FileReader fr = new FileReader(path); int i; // Holds true till there is nothing to read while ((i = fr.read()) != -1) // Print all the content of a file System.out.print((char)i); } }
Produktion
Produktion3. Skannerklass för att läsa textfil
Skannerklass ger ett enkelt sätt att läsa textfiler och analysera primitiva typer eller strängar med reguljära uttryck . Den delar upp inmatningen i tokens med hjälp av en avgränsare (som standard blanksteg).
Exempel 1: Med hjälp av slingor
Javaimport java.io.*; import java.util.Scanner; public class UsingScannerClass { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print('Enter the Path : '); // Reading File name String path = br.readLine(); // pass the path to the file as a parameter File file = new File(path); Scanner sc = new Scanner(file); while (sc.hasNextLine()) System.out.println(sc.nextLine()); } }
Produktion
hink sortering
ProduktionExempel 2: Utan att använda slingor
Javaimport java.io.*; import java.util.Scanner; public class ReadingEntireFileWithoutLoop { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print('Enter the Path : '); // Reading File name String path = br.readLine(); File file = new File(path); Scanner sc = new Scanner(file); // we just need to use \Z as delimiter sc.useDelimiter('\Z'); System.out.println(sc.next()); } }
Produktion
Produktion4. Läser hela filen i en lista
Vi kan läsa en hel textfil till en lista med hjälp av Files.readAllLines() metod från java.nio.file-paketet . Varje rad i filen blir ett element i listan.
Syntax
offentlig statisk lista readAllLines(Path pathCharset cs) kastar IOException
Denna metod känner igen följande som linjeavslutare:
- u000Du000A -> Carriage Return + Line Feed
- u000A -> Linjematning
- u000D -> Carriage Return
import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.*; import java.util.*; public class ReadFileIntoList { public static List<String> readFileInList(String fileName) { // Created List of String List<String> lines = Collections.emptyList(); try { lines = Files.readAllLines( Paths.get(fileName) StandardCharsets.UTF_8); } catch(IOException e) { e.printStackTrace(); } return lines; } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print('Enter the Path : '); // Reading File name String path = br.readLine(); List l = readFileInList(path); // Iterator iterating over List Iterator<String> itr = l.iterator(); while (itr.hasNext()) System.out.println(itr.next()); } }
Produktion
Produktion5. Läs en textfil som String
Vi kan läsa en hel textfil som en enda sträng i Java. Detta är användbart när du vill bearbeta filinnehållet som helhet snarare än rad för rad.
Syntax:
hur man konverterar str till int
String data = new String(Files.readAllBytes(Paths.get(fileName)));
Exempel:
Javapackage io; import java.nio.file.*; public class ReadTextAsString { public static String readFileAsString(String fileName) throws Exception { String data = ''; data = new String( Files.readAllBytes(Paths.get(fileName))); return data; } public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print('Enter the Path : '); // Reading File name String path = br.readLine(); String data = readFileAsString(path); System.out.println(data); } }
Produktion
Produktion Skapa frågesport