使用 CRUD 操作在Java中处理文件
到目前为止,使用Java程序的操作是在一个提示/终端上完成的,它没有存储在任何地方。但是在软件行业,大多数程序都是为了存储从程序中获取的信息而编写的。一种方法是将获取的信息存储在文件中。
什么是Java中的文件处理?
文件是用于存储各种类型信息的容器。通过创建具有唯一名称的文件,数据将永久存储在辅助存储器中。文件可能由文本、图像或任何其他文档组成。
可以对文件执行的不同操作包括:
- 创建一个新文件
- 打开现有文件
- 从文件中读取
- 写入文件
- 移动到文件中的特定位置
- 关闭文件
可以在Java中用于文件处理的不同类:
- 输入流
- 输出流
- 过滤器输出流
- 文件输出流
- 字节数组输出流
- 字节数组输入流
- 文件输入流
- 过滤输入流
- 字符串缓冲区输入流
- 序列输入流
- 缓冲输出流
- 字符串缓冲区输入流
- 数据输出流
- 打印流
- 缓冲输入流
- 数据输入流
- PushbackInputStream
在本文中,我们将学习如何使用Java ByteStreams 执行 8 位(1 字节)的输入和输出,使用 RandomAccessFile 类,该类由writeBytes() 和 readBytes()方法组成,以字节的形式写入和读取数据.
用于执行文件操作的各种方法:
- writeBytes(String s):将字符串作为字节序列写入文件。
- readLine():从此文件中读取下一行文本。
- getFilePointer():返回此文件中的当前偏移量。
- length():返回这个文件的长度,返回类型是long。
- close():关闭此随机访问文件流并释放与该流关联的所有系统资源。
- setLength(long newLength):设置这个文件的长度。
- seek(long pos):设置文件指针偏移量,从该文件的开头开始测量,下一次读取或写入发生的位置。
Java中的文件打开模式: Value Meaning “r” Open for reading only. Invoking any of the write methods of the resulting object will cause an IOException to be thrown. “rw” Open to reading and writing. If the file does not already exist then an attempt will be made to create it. “rws” Open for reading and writing, as with “rw”, and also require that every update to the file’s content or metadata be written synchronously to the underlying storage device. “rwd” Open for reading and writing, as with “rw”, and also require that every update to the file’s content be written synchronously to the underlying storage device.
使用 RandomAccessFile 打开文件的语法:
File file = new File( filename )
RandomAccessFile raf = new RandomAccessFile(file, mode)
在Java中使用文件处理的 CRUD 操作
示例:假设您想将您朋友的联系电话记录保存在一个文件中。要区分您朋友的姓名和联系电话,您需要一个分隔符。为此,您需要选择一个分隔符,例如“!”或“$”或一些特殊符号,不会出现在您朋友的名字中。然后我们将形成一个包含名称、特殊符号和数字的字符串以插入到文件中。
文件friendsContact.txt中联系人的语法:
Name!Number
如何在Java中创建文件?
Java
// Java program to create a file "friendsContact.txt"
// and add a new contact in the file
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.lang.NumberFormatException;
class AddFriend {
public static void main(String data[])
{
try {
// Get the name of the contact to be updated
// from the Command line argument
String newName = data[0];
// Get the number to be updated
// from the Command line argument
long newNumber = Long.parseLong(data[1]);
String nameNumberString;
String name;
long number;
int index;
// Using file pointer creating the file.
File file = new File("friendsContact.txt");
if (!file.exists()) {
// Create a new file if not exists.
file.createNewFile();
}
// Opening file in reading and write mode.
RandomAccessFile raf
= new RandomAccessFile(file, "rw");
boolean found = false;
// Checking whether the name
// of contact already exists.
// getFilePointer() give the current offset
// value from start of the file.
while (raf.getFilePointer() < raf.length()) {
// reading line from the file.
nameNumberString = raf.readLine();
// splitting the string to get name and
// number
String[] lineSplit
= nameNumberString.split("!");
// separating name and number.
name = lineSplit[0];
number = Long.parseLong(lineSplit[1]);
// if condition to find existence of record.
if (name == newName
|| number == newNumber) {
found = true;
break;
}
}
if (found == false) {
// Enter the if block when a record
// is not already present in the file.
nameNumberString
= newName + "!"
+ String.valueOf(newNumber);
// writeBytes function to write a string
// as a sequence of bytes.
raf.writeBytes(nameNumberString);
// To insert the next record in new line.
raf.writeBytes(System.lineSeparator());
// Print the message
System.out.println(" Friend added. ");
// Closing the resources.
raf.close();
}
// The contact to be updated
// could not be found
else {
// Closing the resources.
raf.close();
// Print the message
System.out.println(" Input name"
+ " does not exists. ");
}
}
catch (IOException ioe) {
System.out.println(ioe);
}
catch (NumberFormatException nef) {
System.out.println(nef);
}
}
}
Java
// Java program to read from file "friendsContact.txt"
// and display the contacts
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.lang.NumberFormatException;
class DisplayFriends {
public static void main(String data[])
{
try {
String nameNumberString;
String name;
long number;
int index;
// Using file pointer creating the file.
File file = new File("friendsContact.txt");
if (!file.exists()) {
// Create a new file if not exists.
file.createNewFile();
}
// Opening file in reading and write mode.
RandomAccessFile raf
= new RandomAccessFile(file, "rw");
boolean found = false;
// Traversing the file
// getFilePointer() give the current offset
// value from start of the file.
while (raf.getFilePointer() < raf.length()) {
// reading line from the file.
nameNumberString = raf.readLine();
// splitting the string to get name and
// number
String[] lineSplit
= nameNumberString.split("!");
// separating name and number.
name = lineSplit[0];
number = Long.parseLong(lineSplit[1]);
// Print the contact data
System.out.println(
"Friend Name: " + name + "\n"
+ "Contact Number: " + number + "\n");
}
catch (IOException ioe)
{
System.out.println(ioe);
}
catch (NumberFormatException nef)
{
System.out.println(nef);
}
}
}
Java
// Java program to update in the file "friendsContact.txt"
// and change the number of an old contact
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.lang.NumberFormatException;
class UpdateFriend {
public static void main(String data[])
{
try {
// Get the name of the contact to be updated
// from the Command line argument
String newName = data[0];
// Get the number to be updated
// from the Command line argument
long newNumber = Long.parseLong(data[1]);
String nameNumberString;
String name;
long number;
int index;
// Using file pointer creating the file.
File file = new File("friendsContact.txt");
if (!file.exists()) {
// Create a new file if not exists.
file.createNewFile();
}
// Opening file in reading and write mode.
RandomAccessFile raf
= new RandomAccessFile(file, "rw");
boolean found = false;
// Checking whether the name
// of contact already exists.
// getFilePointer() give the current offset
// value from start of the file.
while (raf.getFilePointer() < raf.length()) {
// reading line from the file.
nameNumberString = raf.readLine();
// splitting the string to get name and
// number
String[] lineSplit
= nameNumberString.split("!");
// separating name and number.
name = lineSplit[0];
number = Long.parseLong(lineSplit[1]);
// if condition to find existence of record.
if (name == newName
|| number == newNumber) {
found = true;
break;
}
}
// Update the contact if record exists.
if (found == true) {
// Creating a temporary file
// with file pointer as tmpFile.
File tmpFile = new File("temp.txt");
// Opening this temporary file
// in ReadWrite Mode
RandomAccessFile tmpraf
= new RandomAccessFile(tmpFile, "rw");
// Set file pointer to start
raf.seek(0);
// Traversing the friendsContact.txt file
while (raf.getFilePointer()
< raf.length()) {
// Reading the contact from the file
nameNumberString = raf.readLine();
index = nameNumberString.indexOf('!');
name = nameNumberString.substring(
0, index);
// Check if the fetched contact
// is the one to be updated
if (name.equals(inputName)) {
// Update the number of this contact
nameNumberString
= name + "!"
+ String.valueOf(newNumber);
}
// Add this contact in the temporary
// file
tmpraf.writeBytes(nameNumberString);
// Add the line separator in the
// temporary file
tmpraf.writeBytes(
System.lineSeparator());
}
// The contact has been updated now
// So copy the updated content from
// the temporary file to original file.
// Set both files pointers to start
raf.seek(0);
tmpraf.seek(0);
// Copy the contents from
// the temporary file to original file.
while (tmpraf.getFilePointer()
< tmpraf.length()) {
raf.writeBytes(tmpraf.readLine());
raf.writeBytes(System.lineSeparator());
}
// Set the length of the original file
// to that of temporary.
raf.setLength(tmpraf.length());
// Closing the resources.
tmpraf.close();
raf.close();
// Deleting the temporary file
tmpFile.delete();
System.out.println(" Friend updated. ");
}
// The contact to be updated
// could not be found
else {
// Closing the resources.
raf.close();
// Print the message
System.out.println(" Input name"
+ " does not exists. ");
}
}
catch (IOException ioe) {
System.out.println(ioe);
}
catch (NumberFormatException nef) {
System.out.println(nef);
}
}
}
Java
// Java program to delete a contact
// from the file "friendsContact.txt"
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.lang.NumberFormatException;
class DeleteFriend {
public static void main(String data[])
{
try {
// Get the name of the contact to be updated
// from the Command line argument
String newName = data[0];
String nameNumberString;
String name;
long number;
int index;
// Using file pointer creating the file.
File file = new File("friendsContact.txt");
if (!file.exists()) {
// Create a new file if not exists.
file.createNewFile();
}
// Opening file in reading and write mode.
RandomAccessFile raf
= new RandomAccessFile(file, "rw");
boolean found = false;
// Checking whether the name of contact exists.
// getFilePointer() give the current offset
// value from start of the file.
while (raf.getFilePointer() < raf.length()) {
// reading line from the file.
nameNumberString = raf.readLine();
// splitting the string to get name and
// number
String[] lineSplit
= nameNumberString.split("!");
// separating name and number.
name = lineSplit[0];
number = Long.parseLong(lineSplit[1]);
// if condition to find existence of record.
if (name == newName) {
found = true;
break;
}
}
// Delete the contact if record exists.
if (found == true) {
// Creating a temporary file
// with file pointer as tmpFile.
File tmpFile = new File("temp.txt");
// Opening this temporary file
// in ReadWrite Mode
RandomAccessFile tmpraf
= new RandomAccessFile(tmpFile, "rw");
// Set file pointer to start
raf.seek(0);
// Traversing the friendsContact.txt file
while (raf.getFilePointer()
< raf.length()) {
// Reading the contact from the file
nameNumberString = raf.readLine();
index = nameNumberString.indexOf('!');
name = nameNumberString.substring(
0, index);
// Check if the fetched contact
// is the one to be deleted
if (name.equals(inputName)) {
// Skip inserting this contact
// into the temporary file
continue;
}
// Add this contact in the temporary
// file
tmpraf.writeBytes(nameNumberString);
// Add the line separator in the
// temporary file
tmpraf.writeBytes(
System.lineSeparator());
}
// The contact has been deleted now
// So copy the updated content from
// the temporary file to original file.
// Set both files pointers to start
raf.seek(0);
tmpraf.seek(0);
// Copy the contents from
// the temporary file to original file.
while (tmpraf.getFilePointer()
< tmpraf.length()) {
raf.writeBytes(tmpraf.readLine());
raf.writeBytes(System.lineSeparator());
}
// Set the length of the original file
// to that of temporary.
raf.setLength(tmpraf.length());
// Closing the resources.
tmpraf.close();
raf.close();
// Deleting the temporary file
tmpFile.delete();
System.out.println(" Friend deleted. ");
}
// The contact to be deleted
// could not be found
else {
// Closing the resources.
raf.close();
// Print the message
System.out.println(" Input name"
+ " does not exists. ");
}
}
catch (IOException ioe) {
System.out.println(ioe);
}
}
}
Create
// Java program to create a file "friendsContact.txt"
// and add a new contact in the file
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.lang.NumberFormatException;
class AddFriend {
public static void main(String data[])
{
try {
// Get the name of the contact to be updated
// from the Command line argument
String newName = data[0];
// Get the number to be updated
// from the Command line argument
long newNumber = Long.parseLong(data[1]);
String nameNumberString;
String name;
long number;
int index;
// Using file pointer creating the file.
File file = new File("friendsContact.txt");
if (!file.exists()) {
// Create a new file if not exists.
file.createNewFile();
}
// Opening file in reading and write mode.
RandomAccessFile raf
= new RandomAccessFile(file, "rw");
boolean found = false;
// Checking whether the name
// of contact already exists.
// getFilePointer() give the current offset
// value from start of the file.
while (raf.getFilePointer() < raf.length()) {
// reading line from the file.
nameNumberString = raf.readLine();
// splitting the string to get name and
// number
String[] lineSplit
= nameNumberString.split("!");
// separating name and number.
name = lineSplit[0];
number = Long.parseLong(lineSplit[1]);
// if condition to find existence of record.
if (name == newName
|| number == newNumber) {
found = true;
break;
}
}
if (found == false) {
// Enter the if block when a record
// is not already present in the file.
nameNumberString
= newName + "!"
+ String.valueOf(newNumber);
// writeBytes function to write a string
// as a sequence of bytes.
raf.writeBytes(nameNumberString);
// To insert the next record in new line.
raf.writeBytes(System.lineSeparator());
// Print the message
System.out.println(" Friend added. ");
// Closing the resources.
raf.close();
}
// The contact to be updated
// could not be found
else {
// Closing the resources.
raf.close();
// Print the message
System.out.println(" Input name"
+ " does not exists. ");
}
}
catch (IOException ioe) {
System.out.println(ioe);
}
catch (NumberFormatException nef) {
System.out.println(nef);
}
}
}
Read
// Java program to read from file "friendsContact.txt"
// and display the contacts
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.lang.NumberFormatException;
class DisplayFriends {
public static void main(String data[])
{
try {
String nameNumberString;
String name;
long number;
int index;
// Using file pointer creating the file.
File file = new File("friendsContact.txt");
if (!file.exists()) {
// Create a new file if not exists.
file.createNewFile();
}
// Opening file in reading and write mode.
RandomAccessFile raf
= new RandomAccessFile(file, "rw");
boolean found = false;
// Traversing the file
// getFilePointer() give the current offset
// value from start of the file.
while (raf.getFilePointer() < raf.length()) {
// reading line from the file.
nameNumberString = raf.readLine();
// splitting the string to get name and
// number
String[] lineSplit
= nameNumberString.split("!");
// separating name and number.
name = lineSplit[0];
number = Long.parseLong(lineSplit[1]);
// Print the contact data
System.out.println(
"Friend Name: " + name + "\n"
+ "Contact Number: " + number + "\n");
}
catch (IOException ioe)
{
System.out.println(ioe);
}
catch (NumberFormatException nef)
{
System.out.println(nef);
}
}
}
Update
// Java program to update in the file "friendsContact.txt"
// and change the number of an old contact
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.lang.NumberFormatException;
class UpdateFriend {
public static void main(String data[])
{
try {
// Get the name of the contact to be updated
// from the Command line argument
String newName = data[0];
// Get the number to be updated
// from the Command line argument
long newNumber = Long.parseLong(data[1]);
String nameNumberString;
String name;
long number;
int index;
// Using file pointer creating the file.
File file = new File("friendsContact.txt");
if (!file.exists()) {
// Create a new file if not exists.
file.createNewFile();
}
// Opening file in reading and write mode.
RandomAccessFile raf
= new RandomAccessFile(file, "rw");
boolean found = false;
// Checking whether the name
// of contact already exists.
// getFilePointer() give the current offset
// value from start of the file.
while (raf.getFilePointer() < raf.length()) {
// reading line from the file.
nameNumberString = raf.readLine();
// splitting the string to get name and
// number
String[] lineSplit
= nameNumberString.split("!");
// separating name and number.
name = lineSplit[0];
number = Long.parseLong(lineSplit[1]);
// if condition to find existence of record.
if (name == newName
|| number == newNumber) {
found = true;
break;
}
}
// Update the contact if record exists.
if (found == true) {
// Creating a temporary file
// with file pointer as tmpFile.
File tmpFile = new File("temp.txt");
// Opening this temporary file
// in ReadWrite Mode
RandomAccessFile tmpraf
= new RandomAccessFile(tmpFile, "rw");
// Set file pointer to start
raf.seek(0);
// Traversing the friendsContact.txt file
while (raf.getFilePointer()
< raf.length()) {
// Reading the contact from the file
nameNumberString = raf.readLine();
index = nameNumberString.indexOf('!');
name = nameNumberString.substring(
0, index);
// Check if the fetched contact
// is the one to be updated
if (name.equals(inputName)) {
// Update the number of this contact
nameNumberString
= name + "!"
+ String.valueOf(newNumber);
}
// Add this contact in the temporary
// file
tmpraf.writeBytes(nameNumberString);
// Add the line separator in the
// temporary file
tmpraf.writeBytes(
System.lineSeparator());
}
// The contact has been updated now
// So copy the updated content from
// the temporary file to original file.
// Set both files pointers to start
raf.seek(0);
tmpraf.seek(0);
// Copy the contents from
// the temporary file to original file.
while (tmpraf.getFilePointer()
< tmpraf.length()) {
raf.writeBytes(tmpraf.readLine());
raf.writeBytes(System.lineSeparator());
}
// Set the length of the original file
// to that of temporary.
raf.setLength(tmpraf.length());
// Closing the resources.
tmpraf.close();
raf.close();
// Deleting the temporary file
tmpFile.delete();
System.out.println(" Friend updated. ");
}
// The contact to be updated
// could not be found
else {
// Closing the resources.
raf.close();
// Print the message
System.out.println(" Input name"
+ " does not exists. ");
}
}
catch (IOException ioe) {
System.out.println(ioe);
}
catch (NumberFormatException nef) {
System.out.println(nef);
}
}
}
Delete
// Java program to delete a contact
// from the file "friendsContact.txt"
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.lang.NumberFormatException;
class DeleteFriend {
public static void main(String data[])
{
try {
// Get the name of the contact to be updated
// from the Command line argument
String newName = data[0];
String nameNumberString;
String name;
long number;
int index;
// Using file pointer creating the file.
File file = new File("friendsContact.txt");
if (!file.exists()) {
// Create a new file if not exists.
file.createNewFile();
}
// Opening file in reading and write mode.
RandomAccessFile raf
= new RandomAccessFile(file, "rw");
boolean found = false;
// Checking whether the name of contact exists.
// getFilePointer() give the current offset
// value from start of the file.
while (raf.getFilePointer() < raf.length()) {
// reading line from the file.
nameNumberString = raf.readLine();
// splitting the string to get name and
// number
String[] lineSplit
= nameNumberString.split("!");
// separating name and number.
name = lineSplit[0];
number = Long.parseLong(lineSplit[1]);
// if condition to find existence of record.
if (name == newName) {
found = true;
break;
}
}
// Delete the contact if record exists.
if (found == true) {
// Creating a temporary file
// with file pointer as tmpFile.
File tmpFile = new File("temp.txt");
// Opening this temporary file
// in ReadWrite Mode
RandomAccessFile tmpraf
= new RandomAccessFile(tmpFile, "rw");
// Set file pointer to start
raf.seek(0);
// Traversing the friendsContact.txt file
while (raf.getFilePointer()
< raf.length()) {
// Reading the contact from the file
nameNumberString = raf.readLine();
index = nameNumberString.indexOf('!');
name = nameNumberString.substring(
0, index);
// Check if the fetched contact
// is the one to be deleted
if (name.equals(inputName)) {
// Skip inserting this contact
// into the temporary file
continue;
}
// Add this contact in the temporary
// file
tmpraf.writeBytes(nameNumberString);
// Add the line separator in the
// temporary file
tmpraf.writeBytes(
System.lineSeparator());
}
// The contact has been deleted now
// So copy the updated content from
// the temporary file to original file.
// Set both files pointers to start
raf.seek(0);
tmpraf.seek(0);
// Copy the contents from
// the temporary file to original file.
while (tmpraf.getFilePointer()
< tmpraf.length()) {
raf.writeBytes(tmpraf.readLine());
raf.writeBytes(System.lineSeparator());
}
// Set the length of the original file
// to that of temporary.
raf.setLength(tmpraf.length());
// Closing the resources.
tmpraf.close();
raf.close();
// Deleting the temporary file
tmpFile.delete();
System.out.println(" Friend deleted. ");
}
// The contact to be deleted
// could not be found
else {
// Closing the resources.
raf.close();
// Print the message
System.out.println(" Input name"
+ " does not exists. ");
}
}
catch (IOException ioe) {
System.out.println(ioe);
}
}
}
输出:
在新创建的文件中编译和添加联系人:
javac AddFriend.java
java AddFriend abc 1111111111
Friend added
java AddFriend pqr 1111111111
Input name or number already exist
文件:
如何在Java中读取文件?
Java
// Java program to read from file "friendsContact.txt"
// and display the contacts
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.lang.NumberFormatException;
class DisplayFriends {
public static void main(String data[])
{
try {
String nameNumberString;
String name;
long number;
int index;
// Using file pointer creating the file.
File file = new File("friendsContact.txt");
if (!file.exists()) {
// Create a new file if not exists.
file.createNewFile();
}
// Opening file in reading and write mode.
RandomAccessFile raf
= new RandomAccessFile(file, "rw");
boolean found = false;
// Traversing the file
// getFilePointer() give the current offset
// value from start of the file.
while (raf.getFilePointer() < raf.length()) {
// reading line from the file.
nameNumberString = raf.readLine();
// splitting the string to get name and
// number
String[] lineSplit
= nameNumberString.split("!");
// separating name and number.
name = lineSplit[0];
number = Long.parseLong(lineSplit[1]);
// Print the contact data
System.out.println(
"Friend Name: " + name + "\n"
+ "Contact Number: " + number + "\n");
}
catch (IOException ioe)
{
System.out.println(ioe);
}
catch (NumberFormatException nef)
{
System.out.println(nef);
}
}
}
输出:
从文件中编译和读取联系人:
javac DisplayFriends.java
java DisplayFriends
Friend Name: abc
Contact Number: 1234567890
Friend Name: lmn
Contact Number: 3333333333
Friend Name: xyz
Contact Number: 4444444444
文件:
如何在Java中更新文件?
Java
// Java program to update in the file "friendsContact.txt"
// and change the number of an old contact
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.lang.NumberFormatException;
class UpdateFriend {
public static void main(String data[])
{
try {
// Get the name of the contact to be updated
// from the Command line argument
String newName = data[0];
// Get the number to be updated
// from the Command line argument
long newNumber = Long.parseLong(data[1]);
String nameNumberString;
String name;
long number;
int index;
// Using file pointer creating the file.
File file = new File("friendsContact.txt");
if (!file.exists()) {
// Create a new file if not exists.
file.createNewFile();
}
// Opening file in reading and write mode.
RandomAccessFile raf
= new RandomAccessFile(file, "rw");
boolean found = false;
// Checking whether the name
// of contact already exists.
// getFilePointer() give the current offset
// value from start of the file.
while (raf.getFilePointer() < raf.length()) {
// reading line from the file.
nameNumberString = raf.readLine();
// splitting the string to get name and
// number
String[] lineSplit
= nameNumberString.split("!");
// separating name and number.
name = lineSplit[0];
number = Long.parseLong(lineSplit[1]);
// if condition to find existence of record.
if (name == newName
|| number == newNumber) {
found = true;
break;
}
}
// Update the contact if record exists.
if (found == true) {
// Creating a temporary file
// with file pointer as tmpFile.
File tmpFile = new File("temp.txt");
// Opening this temporary file
// in ReadWrite Mode
RandomAccessFile tmpraf
= new RandomAccessFile(tmpFile, "rw");
// Set file pointer to start
raf.seek(0);
// Traversing the friendsContact.txt file
while (raf.getFilePointer()
< raf.length()) {
// Reading the contact from the file
nameNumberString = raf.readLine();
index = nameNumberString.indexOf('!');
name = nameNumberString.substring(
0, index);
// Check if the fetched contact
// is the one to be updated
if (name.equals(inputName)) {
// Update the number of this contact
nameNumberString
= name + "!"
+ String.valueOf(newNumber);
}
// Add this contact in the temporary
// file
tmpraf.writeBytes(nameNumberString);
// Add the line separator in the
// temporary file
tmpraf.writeBytes(
System.lineSeparator());
}
// The contact has been updated now
// So copy the updated content from
// the temporary file to original file.
// Set both files pointers to start
raf.seek(0);
tmpraf.seek(0);
// Copy the contents from
// the temporary file to original file.
while (tmpraf.getFilePointer()
< tmpraf.length()) {
raf.writeBytes(tmpraf.readLine());
raf.writeBytes(System.lineSeparator());
}
// Set the length of the original file
// to that of temporary.
raf.setLength(tmpraf.length());
// Closing the resources.
tmpraf.close();
raf.close();
// Deleting the temporary file
tmpFile.delete();
System.out.println(" Friend updated. ");
}
// The contact to be updated
// could not be found
else {
// Closing the resources.
raf.close();
// Print the message
System.out.println(" Input name"
+ " does not exists. ");
}
}
catch (IOException ioe) {
System.out.println(ioe);
}
catch (NumberFormatException nef) {
System.out.println(nef);
}
}
}
输出:
编译和更新文件中的联系人:
javac UpdateFriend.java
java UpdateFriend abc 1234567890
Friend updated.
java UpdateFriend tqr
Input name does not exists.
文件:
如何在Java中删除文件?
Java
// Java program to delete a contact
// from the file "friendsContact.txt"
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.lang.NumberFormatException;
class DeleteFriend {
public static void main(String data[])
{
try {
// Get the name of the contact to be updated
// from the Command line argument
String newName = data[0];
String nameNumberString;
String name;
long number;
int index;
// Using file pointer creating the file.
File file = new File("friendsContact.txt");
if (!file.exists()) {
// Create a new file if not exists.
file.createNewFile();
}
// Opening file in reading and write mode.
RandomAccessFile raf
= new RandomAccessFile(file, "rw");
boolean found = false;
// Checking whether the name of contact exists.
// getFilePointer() give the current offset
// value from start of the file.
while (raf.getFilePointer() < raf.length()) {
// reading line from the file.
nameNumberString = raf.readLine();
// splitting the string to get name and
// number
String[] lineSplit
= nameNumberString.split("!");
// separating name and number.
name = lineSplit[0];
number = Long.parseLong(lineSplit[1]);
// if condition to find existence of record.
if (name == newName) {
found = true;
break;
}
}
// Delete the contact if record exists.
if (found == true) {
// Creating a temporary file
// with file pointer as tmpFile.
File tmpFile = new File("temp.txt");
// Opening this temporary file
// in ReadWrite Mode
RandomAccessFile tmpraf
= new RandomAccessFile(tmpFile, "rw");
// Set file pointer to start
raf.seek(0);
// Traversing the friendsContact.txt file
while (raf.getFilePointer()
< raf.length()) {
// Reading the contact from the file
nameNumberString = raf.readLine();
index = nameNumberString.indexOf('!');
name = nameNumberString.substring(
0, index);
// Check if the fetched contact
// is the one to be deleted
if (name.equals(inputName)) {
// Skip inserting this contact
// into the temporary file
continue;
}
// Add this contact in the temporary
// file
tmpraf.writeBytes(nameNumberString);
// Add the line separator in the
// temporary file
tmpraf.writeBytes(
System.lineSeparator());
}
// The contact has been deleted now
// So copy the updated content from
// the temporary file to original file.
// Set both files pointers to start
raf.seek(0);
tmpraf.seek(0);
// Copy the contents from
// the temporary file to original file.
while (tmpraf.getFilePointer()
< tmpraf.length()) {
raf.writeBytes(tmpraf.readLine());
raf.writeBytes(System.lineSeparator());
}
// Set the length of the original file
// to that of temporary.
raf.setLength(tmpraf.length());
// Closing the resources.
tmpraf.close();
raf.close();
// Deleting the temporary file
tmpFile.delete();
System.out.println(" Friend deleted. ");
}
// The contact to be deleted
// could not be found
else {
// Closing the resources.
raf.close();
// Print the message
System.out.println(" Input name"
+ " does not exists. ");
}
}
catch (IOException ioe) {
System.out.println(ioe);
}
}
}
输出:
编译和删除文件中的联系人:
javac DeleteFriend.java
java DeleteFriend pqr
Friend deleted.
java DeleteFriend tqr
Input name does not exists.
文件:
创造
// Java program to create a file "friendsContact.txt"
// and add a new contact in the file
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.lang.NumberFormatException;
class AddFriend {
public static void main(String data[])
{
try {
// Get the name of the contact to be updated
// from the Command line argument
String newName = data[0];
// Get the number to be updated
// from the Command line argument
long newNumber = Long.parseLong(data[1]);
String nameNumberString;
String name;
long number;
int index;
// Using file pointer creating the file.
File file = new File("friendsContact.txt");
if (!file.exists()) {
// Create a new file if not exists.
file.createNewFile();
}
// Opening file in reading and write mode.
RandomAccessFile raf
= new RandomAccessFile(file, "rw");
boolean found = false;
// Checking whether the name
// of contact already exists.
// getFilePointer() give the current offset
// value from start of the file.
while (raf.getFilePointer() < raf.length()) {
// reading line from the file.
nameNumberString = raf.readLine();
// splitting the string to get name and
// number
String[] lineSplit
= nameNumberString.split("!");
// separating name and number.
name = lineSplit[0];
number = Long.parseLong(lineSplit[1]);
// if condition to find existence of record.
if (name == newName
|| number == newNumber) {
found = true;
break;
}
}
if (found == false) {
// Enter the if block when a record
// is not already present in the file.
nameNumberString
= newName + "!"
+ String.valueOf(newNumber);
// writeBytes function to write a string
// as a sequence of bytes.
raf.writeBytes(nameNumberString);
// To insert the next record in new line.
raf.writeBytes(System.lineSeparator());
// Print the message
System.out.println(" Friend added. ");
// Closing the resources.
raf.close();
}
// The contact to be updated
// could not be found
else {
// Closing the resources.
raf.close();
// Print the message
System.out.println(" Input name"
+ " does not exists. ");
}
}
catch (IOException ioe) {
System.out.println(ioe);
}
catch (NumberFormatException nef) {
System.out.println(nef);
}
}
}
读
// Java program to read from file "friendsContact.txt"
// and display the contacts
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.lang.NumberFormatException;
class DisplayFriends {
public static void main(String data[])
{
try {
String nameNumberString;
String name;
long number;
int index;
// Using file pointer creating the file.
File file = new File("friendsContact.txt");
if (!file.exists()) {
// Create a new file if not exists.
file.createNewFile();
}
// Opening file in reading and write mode.
RandomAccessFile raf
= new RandomAccessFile(file, "rw");
boolean found = false;
// Traversing the file
// getFilePointer() give the current offset
// value from start of the file.
while (raf.getFilePointer() < raf.length()) {
// reading line from the file.
nameNumberString = raf.readLine();
// splitting the string to get name and
// number
String[] lineSplit
= nameNumberString.split("!");
// separating name and number.
name = lineSplit[0];
number = Long.parseLong(lineSplit[1]);
// Print the contact data
System.out.println(
"Friend Name: " + name + "\n"
+ "Contact Number: " + number + "\n");
}
catch (IOException ioe)
{
System.out.println(ioe);
}
catch (NumberFormatException nef)
{
System.out.println(nef);
}
}
}
更新
// Java program to update in the file "friendsContact.txt"
// and change the number of an old contact
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.lang.NumberFormatException;
class UpdateFriend {
public static void main(String data[])
{
try {
// Get the name of the contact to be updated
// from the Command line argument
String newName = data[0];
// Get the number to be updated
// from the Command line argument
long newNumber = Long.parseLong(data[1]);
String nameNumberString;
String name;
long number;
int index;
// Using file pointer creating the file.
File file = new File("friendsContact.txt");
if (!file.exists()) {
// Create a new file if not exists.
file.createNewFile();
}
// Opening file in reading and write mode.
RandomAccessFile raf
= new RandomAccessFile(file, "rw");
boolean found = false;
// Checking whether the name
// of contact already exists.
// getFilePointer() give the current offset
// value from start of the file.
while (raf.getFilePointer() < raf.length()) {
// reading line from the file.
nameNumberString = raf.readLine();
// splitting the string to get name and
// number
String[] lineSplit
= nameNumberString.split("!");
// separating name and number.
name = lineSplit[0];
number = Long.parseLong(lineSplit[1]);
// if condition to find existence of record.
if (name == newName
|| number == newNumber) {
found = true;
break;
}
}
// Update the contact if record exists.
if (found == true) {
// Creating a temporary file
// with file pointer as tmpFile.
File tmpFile = new File("temp.txt");
// Opening this temporary file
// in ReadWrite Mode
RandomAccessFile tmpraf
= new RandomAccessFile(tmpFile, "rw");
// Set file pointer to start
raf.seek(0);
// Traversing the friendsContact.txt file
while (raf.getFilePointer()
< raf.length()) {
// Reading the contact from the file
nameNumberString = raf.readLine();
index = nameNumberString.indexOf('!');
name = nameNumberString.substring(
0, index);
// Check if the fetched contact
// is the one to be updated
if (name.equals(inputName)) {
// Update the number of this contact
nameNumberString
= name + "!"
+ String.valueOf(newNumber);
}
// Add this contact in the temporary
// file
tmpraf.writeBytes(nameNumberString);
// Add the line separator in the
// temporary file
tmpraf.writeBytes(
System.lineSeparator());
}
// The contact has been updated now
// So copy the updated content from
// the temporary file to original file.
// Set both files pointers to start
raf.seek(0);
tmpraf.seek(0);
// Copy the contents from
// the temporary file to original file.
while (tmpraf.getFilePointer()
< tmpraf.length()) {
raf.writeBytes(tmpraf.readLine());
raf.writeBytes(System.lineSeparator());
}
// Set the length of the original file
// to that of temporary.
raf.setLength(tmpraf.length());
// Closing the resources.
tmpraf.close();
raf.close();
// Deleting the temporary file
tmpFile.delete();
System.out.println(" Friend updated. ");
}
// The contact to be updated
// could not be found
else {
// Closing the resources.
raf.close();
// Print the message
System.out.println(" Input name"
+ " does not exists. ");
}
}
catch (IOException ioe) {
System.out.println(ioe);
}
catch (NumberFormatException nef) {
System.out.println(nef);
}
}
}
删除
// Java program to delete a contact
// from the file "friendsContact.txt"
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.lang.NumberFormatException;
class DeleteFriend {
public static void main(String data[])
{
try {
// Get the name of the contact to be updated
// from the Command line argument
String newName = data[0];
String nameNumberString;
String name;
long number;
int index;
// Using file pointer creating the file.
File file = new File("friendsContact.txt");
if (!file.exists()) {
// Create a new file if not exists.
file.createNewFile();
}
// Opening file in reading and write mode.
RandomAccessFile raf
= new RandomAccessFile(file, "rw");
boolean found = false;
// Checking whether the name of contact exists.
// getFilePointer() give the current offset
// value from start of the file.
while (raf.getFilePointer() < raf.length()) {
// reading line from the file.
nameNumberString = raf.readLine();
// splitting the string to get name and
// number
String[] lineSplit
= nameNumberString.split("!");
// separating name and number.
name = lineSplit[0];
number = Long.parseLong(lineSplit[1]);
// if condition to find existence of record.
if (name == newName) {
found = true;
break;
}
}
// Delete the contact if record exists.
if (found == true) {
// Creating a temporary file
// with file pointer as tmpFile.
File tmpFile = new File("temp.txt");
// Opening this temporary file
// in ReadWrite Mode
RandomAccessFile tmpraf
= new RandomAccessFile(tmpFile, "rw");
// Set file pointer to start
raf.seek(0);
// Traversing the friendsContact.txt file
while (raf.getFilePointer()
< raf.length()) {
// Reading the contact from the file
nameNumberString = raf.readLine();
index = nameNumberString.indexOf('!');
name = nameNumberString.substring(
0, index);
// Check if the fetched contact
// is the one to be deleted
if (name.equals(inputName)) {
// Skip inserting this contact
// into the temporary file
continue;
}
// Add this contact in the temporary
// file
tmpraf.writeBytes(nameNumberString);
// Add the line separator in the
// temporary file
tmpraf.writeBytes(
System.lineSeparator());
}
// The contact has been deleted now
// So copy the updated content from
// the temporary file to original file.
// Set both files pointers to start
raf.seek(0);
tmpraf.seek(0);
// Copy the contents from
// the temporary file to original file.
while (tmpraf.getFilePointer()
< tmpraf.length()) {
raf.writeBytes(tmpraf.readLine());
raf.writeBytes(System.lineSeparator());
}
// Set the length of the original file
// to that of temporary.
raf.setLength(tmpraf.length());
// Closing the resources.
tmpraf.close();
raf.close();
// Deleting the temporary file
tmpFile.delete();
System.out.println(" Friend deleted. ");
}
// The contact to be deleted
// could not be found
else {
// Closing the resources.
raf.close();
// Print the message
System.out.println(" Input name"
+ " does not exists. ");
}
}
catch (IOException ioe) {
System.out.println(ioe);
}
}
}