1. Чтение содержимого файла побайтово.
public class ReadFromFile {public static void readFileByBytes(String fileName) {File file = new File(fileName);InputStream in = null;try {System.out.println("Прочитайте содержимое файла в байтах, по одному слову. Раздел: ");//Читаем по одному байту в = new FileInputStream(file);int tempbyte; while ((tempbyte = in.read()) != -1) {System.out.write(tempbyte);}in.close();} catch (IOException e) {e.printStackTrace();return;}try {System.out.println("Прочитать файл в байтах Содержимое, прочитать несколько байтов за раз: "); // Чтение нескольких байтов за раз byte[] tempbytes = new byte[100];int byteread = 0;in = new FileInputStream(fileName);ReadFromFile.showAvailableBytes(in);//Читаем несколько байтов в массив байтов, byteread — это количество байтов, прочитанных за один раз while ((byteread = in.read(tempbytes)) != - 1) { System.out.write(tempbytes, 0, byteread);}} catch (Exception e1) {e1.printStackTrace();} наконец {if (in != null) {try {in.close();} catch (IOException e1) {}}}}
2. Чтение содержимого файла по символам
public static void readFileByChars(String fileName) {File file = new File(fileName);Reader Reader = null;try {System.out.println("Прочитайте содержимое файла в символьных единицах, по одному байту:"); /Читать по одному символу reader = new InputStreamReader(new FileInputStream(file));int tempchar; while ((tempchar = reader.read()) != -1) {// В Windows, когда два символа /r/n вместе, они представляют собой новую строку. // Но если эти два символа будут отображаться отдельно, строки будут изменены дважды. // Итак, заблокируйте /r или заблокируйте /n. В противном случае будет много пустых строк. if (((char) tempchar) != '/r') {System.out.print((char) tempchar);}}reader.close();} catch (Exception e) {e.printStackTrace();} try {System.out.println("Читать содержимое файла в символьных единицах, читать несколько байтов за раз:");//Читать несколько символов одновременно char[] tempchars = new char[30];int charread = 0;reader = new InputStreamReader(new FileInputStream(fileName));//Читаем несколько символов в массив символов, charread — это количество символов, считываемых за раз, while ((charread = reader.read(tempchars)) != -1 ) {// Также экранируйте /r и не отображайте if ((charread == tempchars.length)&& (tempchars[tempchars.length - 1] != '/r')) {System.out.print(tempchars);} else {for (int i = 0; i <charread; i++) {if (tempchars[i] == '/r') {продолжить;} else {System.out. print(tempchars[i]);}}}}} catch (Exception e1) {e1.printStackTrace();} наконец {if (reader != null) {try {reader.close();} catch (IOException e1) {}}}}
3. Прочитайте содержимое файла построчно.
public static void readFileByLines(String fileName) {File file = new File(fileName);BufferedReader Reader = null;try {System.out.println("Прочитайте содержимое файла в построчных единицах, прочитайте всю строку за раз:") ;reader = new BufferedReader(new FileReader(file));String tempString = null;int line = 1;//Читаем по одной строке за раз, пока не будет прочитано значение null как конец файла, пока ((tempString = readLine()) != null) {//Показать номер строки System.out.println("line " + line + ": " + tempString);line++;}reader.close();} catch (IOException e) {e.printStackTrace();} наконец {if (reader != null) {try {reader.close();} catch (IOException e1) {}}}}
4. Произвольное чтение содержимого файла
public static void readFileByRandomAccess(String fileName) {RandomAccessFile randomFile = null;try {System.out.println("Произвольно прочитать содержимое файла:");//Открыть поток файлов с произвольным доступом в режиме только для чтения randomFile = new RandomAccessFile ( fileName, "r"); // Длина файла, количество байтов fileLength = randomFile.length(); // Читаем начальную позицию файла int BeginIndex = (fileLength > 4) ? 4 : 0;//Перемещаем начальную позицию чтения файла в позицию BeginIndex. randFile.seek(beginIndex);byte[] bytes = new byte[10];int byteread = 0;//Читаем 10 байт за раз. Если содержимое файла меньше 10 байт, читаем оставшиеся байты. // Назначаем количество читаемых за раз байтов byteread while ((byteread = randomFile.read(bytes)) != -1) {System.out.write(bytes, 0, byteread);}} catch (IOException e) {e.printStackTrace();} наконец {if (randomFile != null) {try {randomFile.close();} catch (IOException e1) {}}}}private static void showAvailableBytes(InputStream in) {try {System.out.println("Количество байтов в текущем входном потоке байтов:" + in.available());} catch (IOException e) {e.printStackTrace();} } public static void main(String[] args) {String fileName = "C:/temp/newTemp.txt";ReadFromFile.readFileByBytes(имя_файла);ReadFromFile.readFileByChars(имя_файла);ReadFromFile.readFileByLines(имя_файла);ReadFromFile.readFileByRandomAccess(имя_файла);}}
5. Добавьте содержимое в конец файла.
public class AppendToFile {public static void addMethodA(String fileName, String content) {try {//Открыть поток файлов с произвольным доступом, прочитать и записать RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");//Длина файла, количество слов секций long fileLength = randomFile.length();//Перемещаем указатель файла записи в конец файла. randomFile.seek(fileLength);randomFile.writeBytes(content);randomFile.close();} catch (IOException e) {e.printStackTrace();}}public static void AppendMethodB(String fileName, String content) {try {/ /Открыть файл записи. Второй параметр конструктора true означает запись файла в форме добавления. FileWriter writer = new FileWriter(fileName, true);writer.write(content);writer.close();} catch (IOException e) {e.printStackTrace();}} public static void main(String[] args) {String fileName = "C:/temp /newTemp.txt";String content = "новое добавление!";//Добавляем файл в соответствии с методом AAppendToFile.appendMethodA(fileName, content);AppendToFile.appendMethodA(fileName, "append end. /n");//Отобразить содержимое файла ReadFromFile.readFileByLines(fileName);//Добавить файл согласно методу BAppendToFile.appendMethodB(fileName, content);AppendToFile. AppendMethodB(имя_файла, "добавить end. /n");//Показать содержимое файла ReadFromFile.readFileByLines(fileName);}}