Java - Read and write a file

From XennisWiki
Jump to: navigation, search

Use Java to read an text file.

Read a text file

Using BufferedReader and FileReader

Java code to read the content of the following text file daten.txt:

2 Franken 1989 5
1 Baden 1986 3
4 Rheinhessen 1987 10
1 Mosel 1991 2
4 Württemberg 1990 3
2 Franken 1990 10

The Java file:

import java.io.*;

public class Weinkeller
{

	public static void main(String[] args)
	{
		try {
			read("daten.txt");
		} catch (Exception e) {
			System.out.println(e);
		}
	}
	
	/**
	 * Liest die übergebene Datei zeilenweise ein und gibt die Daten entsprechenden
	 * der definierten Bedingung aus.
	 * 
	 * @param filename Einzulesende Datei
	 * @throws Exception
	 */
	public static void read(String filename) throws Exception
	{
		File file = new File(filename);	
		String line;

		BufferedReader in = new BufferedReader(new FileReader(file));
				
		// Zeilen der Datei durchlaufen
		while((line = in.readLine()) != null) {
			// Zeile in Felder zerlegen
			String[] split = line.split(" ");

			// Überprüfen, ob die Anzahl der Flaschen kleiner als 5 ist
			if(Integer.parseInt( split[3] ) < 5) {
				System.out.println(split[1] + " " + split[0]);
			}			
		}
	}
}

Using Scanner

try {
	Scanner scanner;
	scanner = new Scanner(new File(fileName));
	// Read file
	while(scanner.hasNext()) {
		String line = scanner.nextLine();
		// some action				
	}
	scanner.close();
} catch (FileNotFoundException e) {
	e.printStackTrace();
}

Properties - Using BufferedInputStream and FileInputStream

Weitere Hilfe: Java-Properties-Datei

Beispiel Properties-Datei hamburg.ini

name=Berlin
coordinates=berlin_coordinates.txt
ticket_types=walk,car,swim

Java Methode

	public loadConfig(String filePath) {
		try {
			BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filePath));
			prop.load(bis);
			bis.close();

			Properties prop = new Properties();
			String name = prop.getProperty("name");
			String coordinates = prop.getProperty("coordinates");
			String ticket_types = prop.getProperty("ticket_types");	
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

Read and write a file

Using BufferedReader and BufferedWrite

FileLoader.java

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileLoader {
	
	/**
	 * Läd eine Datei.
	 * 
	 * @param fileName
	 *            Dateiname mit Pfad
	 * @return Geladene Datei als BufferedReader
	 */
	public static BufferedReader loadFile(String fileName) {
	    File file = new File(fileName);
	    try {
			return new BufferedReader(new FileReader(file));
		} catch (FileNotFoundException e) {
			System.err.println("Fehler beim Laden der Datei " + fileName);
			return null;
		}
	}
	
	/**
	 * Legt eine neue Datei an, in die dann geschrieben werden kann.
	 * 
	 * @param fileName
	 *            Dateiname mit Pfad
	 * @return Neue Datei als BufferedWriter
	 */
	public static BufferedWriter writeFile(String fileName) {
		try {
			FileWriter fw = new FileWriter(fileName);
			return new BufferedWriter(fw);
		} catch (IOException e) {
			System.err.println("Fehler beim Schreiben der Datei " + fileName);
			return null;
		}
	}
}

Read

	/**
	 * Fügt die Map Object aus einer Datei hinzu.
	 * 
	 * @param fileName
	 *            Name der Datei (mit Endung, aber ohne Pfad)
	 */
	public void read(String fileName) {
		int i = 0;

		fileName = Constants.mapObjectDirPath + fileName;
		BufferedReader input = FileLoader.loadFile(fileName);

		String line = "";
		try {
			while ((line = input.readLine()) != null) {

				if (!line.isEmpty()) {
					String[] split = line.split(" ");

					double lat = Double.parseDouble(split[1]);
					double lon = Double.parseDouble(split[2]);
					int radius = Integer.parseInt(split[3]);
				}
			}
		} catch (Exception e) {
			System.err.println("Fehler beim Einlesen der Datei " + fileName);
		}
	}

Write

	/**
	 * Speichert die aufgenommen Punkte
	 */
	public static void save(String name) {
		if (name.isEmpty()) {
			name = Long.toString(System.currentTimeMillis());
		}

		try {
			BufferedWriter bw = FileLoader.writeFile(Constants.mapObjectDirPath
					+ "mapObject_" + name + ".ini");

			for (Tuple2d t : avg) {
				bw.write("buoy " + t.getX() + " " + t.getY() + " "
						+ buoy_radius + "\n");
			}
			bw.close();
		} catch (Exception e) {
			System.err.println("Fehler beim Speichern der GPS-Punkte");
		}
	}

See also