Java 如何从数据文件或文本文件中删除行?
我有一个程序,它要求数据文件具有显示所有员工、单个员工、插入员工和删除员工的部分 下面是完整的代码,但我不知道如何删除部分Java 如何从数据文件或文本文件中删除行?,java,text-files,Java,Text Files,我有一个程序,它要求数据文件具有显示所有员工、单个员工、插入员工和删除员工的部分 下面是完整的代码,但我不知道如何删除部分 import java.io.*; import java.util.*; import java.util.Scanner; import javax.swing.*; import java.io.IOException; import java.io.FileNotFoundException; import java.io.FileReader; public c
import java.io.*;
import java.util.*;
import java.util.Scanner;
import javax.swing.*;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.FileReader;
public class Program6pt2
{
static Scanner scan = new Scanner (System.in);
static String str, FName, LName, SS, SS1, Name;
static double pay, hours;
static double rate, gross, overtime, net, NO, fed, state, deduction;
static double union=7.85, hospital=25.65;
static char ch, ch1;
static int num, i;
//static Scanner scan= new Scanner(System.in);
public static void main(String[] args)throws FileNotFoundException, IOException
{
Scanner infile= new Scanner(new FileReader("G:\\Program5.txt"));
{
System.out.println("########################################################");
System.out.println("# The purpose of the following algorithms #");
System.out.println("# are to find the area, surface area, volume,` #");
System.out.println("# and compound interest of the following programs #");
System.out.println("########################################################");
do {
System.out.println("######################################################");
System.out.println("# #");
System.out.println("# MENU #");
System.out.println("# 1. Individual Employees #");
System.out.println("# 2. All Employees #");
System.out.println("# 2. Insert #");
System.out.println("# 2. Quit #");
System.out.println("######################################################");
System.out.println();
System.out.println(" Please enter 1 or 2 to quit ");
num = scan.nextInt();
switch (num)
{
case 1:individual(SS, LName, FName, pay, hours);
break;
case 2: all(SS, LName, FName, pay, hours);
break;
case 3: insert(SS, LName, FName, pay, hours);
break;
case 4: delete(SS, LName, FName, pay, hours);
break;
default: System.out.println("Thank you so much for using this Program!");
}
}while(num != 5);
}
}
public static void individual(String a, String b, String c, double d, double e)throws FileNotFoundException, IOException
{
Scanner infile= new Scanner(new FileReader("G:\\Program5.txt"));
int i=0;
System.out.println("---****************************************************************---");
System.out.println("--- THIS MENU ALLOWS THE USER TO SELECT A SS NUMBER OR AN ****---");
System.out.println("--- INDIVIDUAL'S NAME AND DISPLAY ALL THEIR INFO AS WELL ****---");
System.out.println("--- DISPLAY ALL THE NAMES IN THE LIST AS WELL AS THEIR SS # IN ***----");
System.out.println("--- A LIST ****---");
System.out.println("---****************************************************************---");
do
{
System.out.println("################### #########################");
System.out.println("# MAIN MENU #");
System.out.println("# 1. Enter The Social Security Number #");
System.out.println("# 2. Quit #");
System.out.println("# 3. Main Menu #");
System.out.println("# #");
System.out.println("#############################################");
System.out.println();
System.out.println(" Please enter 1,2,3 or 4 ");
num = scan.nextInt();
System.out.println();
switch (num)
{
case 1:SSnumber(a,b,c,d,e);
break;
case 3: System.out.println("Please enter a number");
break;
default: System.out.println("Please select A, B, C, or D to Quit");
break;
}
}while(num != 3);
}
public static void SSnumber(String A, String B, String C, double D, double E)throws FileNotFoundException, IOException
{
Scanner infile = new Scanner(new FileReader("G:\\Program5.txt"));
int i=0;
System.out.print("Enter the employee number (ex. 111-11-1111) : ");
SS1= scan.next();
System.out.println();
System.out.println("-----------------------------------------------------------------------------------------------------------");
System.out.printf("%-4s%10s%13s%8s%10s%14s%12s%13s%10s%n", "NO.", "Last Name", "First Name", "Hours", "Payrate", "Overtime Pay", "Gross Pay", "Deductions", "Net Pay");
System.out.println("-----------------------------------------------------------------------------------------------------------");
while (infile.hasNext())
{
A= infile.next();
B= infile.next();
C= infile.next();
D= infile.nextDouble();
E= infile.nextDouble();
++i;
if(A.compareTo(SS1) ==0)
{
if(E>40)
{
overtime= 1.5*D*(E-40);
gross= overtime+ (D*40);
}
else
{
overtime=0;
gross= E*D;
}
fed=gross*0.18;
state=gross*0.045;
deduction=fed+state+hospital+union;
net=gross-deduction;
//System.out.println(+i+ B+ C+ E+ D+ overtime+ gross+ deduction+ net);
System.out.printf("%-5d%-12s%-12s%6.1f%9.2f%10.2f%15.2f%13.2f%10.2f%n", i, B, C, E, D, overtime, gross, deduction, net);
}
}
infile.close();
System.out.println();
System.out.println();
}
public static void all(String a, String b, String c, double d, double e)throws FileNotFoundException, IOException
{
Scanner infile = new Scanner(new FileReader("G:\\Program5.txt"));
int i=0;
System.out.println("-----------------------------------------------------------------------------------------------------------");
System.out.printf("%-4s%10s%13s%8s%10s%14s%12s%13s%10s%n", "NO.", "Last Name", "First Name", "Hours", "Payrate", "Overtime Pay", "Gross Pay", "Deductions", "Net Pay");
System.out.println("-----------------------------------------------------------------------------------------------------------");
while (infile.hasNext())
{
a= infile.next();
b= infile.next();
c= infile.next();
d= infile.nextDouble();
e= infile.nextDouble();
++i;
if(e>40)
{
overtime=1.5*d*(e-40);
gross= overtime+(d*40);
}
else
{
overtime=0;
gross=e*d;
}
fed=gross*0.18;
state=gross*0.045;
deduction=fed+state+union+hospital;
net=gross-deduction;
System.out.printf("%-5d%-12s%-12s%6.1f%9.2f%10.2f%15.2f%13.2f%10.2f%n", i, b, c, e, d, overtime, gross, deduction, net );
}
infile.close();
System.out.println();
System.out.println();
}
public static void insert(String a, String b, String c, double d, double e)throws FileNotFoundException
{
Scanner infile = new Scanner(new FileReader("G:\\Program5.txt"));
try
{
while (infile.hasNext())
{
a= infile.next();
b= infile.next();
c= infile.next();
d= infile.nextDouble();
e= infile.nextDouble();
}
System.out.print("Enter the ID number (ex.111-22-3333) : ");
a=scan.next();
System.out.print("Enter the Last Name (ex. Smith) : ");
b=scan.next();
System.out.print("Enter the First Name (ex. John) : ");
c=scan.next();
System.out.print("Enter the pay rate (ex 7.00) : ");
d=scan.nextDouble();
System.out.print("Enter the hours worked (ex 57.0) : ");
e=scan.nextDouble();
FileWriter insert1 = new FileWriter("G:\\Program5.txt", true);
insert1.append("\n");
insert1.append(a + " ");
insert1.append(b + " ");
insert1.append(c + " ");
insert1.append(d + " ");
insert1.append(e + "\n");
insert1.close();
}
catch(Exception o)
{
System.out.println("Wrong");
}
System.out.println();
}
public static void delete(String a, String b, String c, double d, double e)throws FileNotFoundException
{
Scanner infile = new Scanner(new FileReader("G:\\Program5.txt"));
try
{
boolean append=false;
Scanner inFile = new Scanner(new FileReader("G:\\Program5.txt"));
FileWriter outfile= new FileWriter("G:\\Program5.txt", append);
BufferedWriter print = new BufferedWriter(outfile);
System.out.println("choose a employee to delete from the system.");
System.out.print("Enter the employee Social Security Number: ");
SS= scan.next();
{
print.write("\n");
print.write( a + " " );
print.write( "\n");
}
print.close();
}
catch (IOException ioe)
{
ioe.printStackTrace();
System.out.println("Wrong");
}
System.out.println();
}
}
您可以使用下面的代码将所需行替换为“”或null
public static boolean readReplace(String fileName, String oldPattern,
String replPattern, int lineNumber) {
String line;
StringBuffer sb = new StringBuffer();
int nbLinesRead = 0;
try {
FileInputStream fis = new FileInputStream(fileName);
BufferedReader reader = new BufferedReader(new InputStreamReader(
fis));
while ((line = reader.readLine()) != null) {
nbLinesRead++;
line = line.toLowerCase();
if (nbLinesRead == lineNumber) {
line = line.replaceFirst(oldPattern.toLowerCase(),
replPattern);
}
sb.append(line + "\n");
}
reader.close();
BufferedWriter out = new BufferedWriter(new FileWriter(fileName));
out.write(sb.toString());
out.close();
} catch (Exception e) {
return false;
}
return true;
}
简单回答:你不能 详细回答:创建一个新文件,并将所有行(不包含的行除外)复制到该文件中。在此之后,重命名旧文件,然后重命名新文件,并可能删除旧文件。请参阅此处提供的答案:
最好将文件的修改版本(要删除的部分已删除)写入临时文件,删除(或备份)原始文件,然后重命名为原始文件名。首先需要定义“删除”、“行”和“文件”。(如果您能定义一个程序的面积、表面积、体积和复利,也会很有趣。)(一般来说,您不能从标准磁盘文件的中间删除一行。您可以截断文件以从结尾删除,也可以将该行替换为空格或类似的内容,或者复制文件并在新副本中省略该行,但这些都是您的选择。)@Hotlicks!哈哈!我的程序一直使用旧shell。我从不放弃它们!我认为找到工资系统的面积、sa、数量和复利将非常有趣!&谢谢您仍然需要定义“删除”、“行”和“文件”.说真的。你需要理解这些术语在你的上下文中的含义。你能进一步解释一下你要我做什么吗?谢谢穆罕默德·阿米·波克!一个简单的问题,我需要在案例“4”的开关中输入什么