Java 我可以用一种方法读写不同的txt文件吗(im读取的文件中的内容会被删除)?

Java 我可以用一种方法读写不同的txt文件吗(im读取的文件中的内容会被删除)?,java,file-io,Java,File Io,我想创建一个方法,读取一个特定的.txt文件,与另一个指定给数组的特定.txt文件进行比较,如果它们不匹配,则编写一个.txt文件来打印问题。在读取另一个.txt文件时是否可以写入.txt文件? (注意:我使用PrintWriter写入文件,使用扫描仪读取文件) 公共静态void updateInventory(字符串filename1、字符串filename2、字符串[]name1、int[]数量1){ 文件更新=新文件(文件名1); 扫描仪输入=新扫描仪(更新); 文件日志=新文件(file

我想创建一个方法,读取一个特定的.txt文件,与另一个指定给数组的特定.txt文件进行比较,如果它们不匹配,则编写一个.txt文件来打印问题。在读取另一个.txt文件时是否可以写入.txt文件? (注意:我使用PrintWriter写入文件,使用扫描仪读取文件)

公共静态void updateInventory(字符串filename1、字符串filename2、字符串[]name1、int[]数量1){
文件更新=新文件(文件名1);
扫描仪输入=新扫描仪(更新);
文件日志=新文件(filename2);
PrintWriter输出=新的PrintWriter(日志);
int i=0;
while(input.hasNext()){
做{
字符串s=input.next();
s=s.substring(0,1).toUpperCase()+s.substring(1).toLowerCase();
如果(s==name1[i]){
int num=input.nextInt();
如果(num>=0&&num
您的代码需要以下改进:

  • 用于在追加模式下打开日志文件
  • 使用
    string1.equals(string2)
    而不是
    string1==string2
    string1
    string2
    进行比较
  • 在使用
    nextInt()
    之前,请先使用
    hasNextInt()
  • 使用
    while
    循环的终止条件,考虑所有方面,例如可能使其无限运行的值和
    while
    循环中的代码使用的值
  • 以下是完整的代码:

    public static void updateInventory(String filename1, String filename2, String[] name1, int[] quantity1) {
        File updated = new File(filename1);
        Scanner input = null;
        try {
            input = new Scanner(updated);
        } catch (FileNotFoundException e) {
            System.out.println("Error reading file, " + filename1);
        }
        FileWriter log = null;
        PrintWriter output = null;
        try {
            log = new FileWriter(filename2, true);
            output = new PrintWriter(log);
        } catch (Exception e) {
            System.out.println("Error creating log file, " + filename2);
        }
        int i = 0;
        int num = 0;
        String s;
        while (input != null && input.hasNext() && i < name1.length && i < quantity1.length) {
            s = input.next();
            s = s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase();
            if (s.equals(name1[i]) && input.hasNextInt()) {
                num = input.nextInt();
                if (num >= 0 && num < quantity1[i]) {
                    quantity1[i] -= num;
                }
            }
            if (i == name1.length) {
                output.println("ERROR: Item " + s + " not found");
            }
            if (num < 0) {
                output.println("ERROR: Invalid amount requested (" + num + ")");
            }
            i++;
        }
        output.close();
        input.close();
    }
    
    公共静态void updateInventory(字符串filename1、字符串filename2、字符串[]name1、int[]数量1){
    文件更新=新文件(文件名1);
    扫描仪输入=空;
    试一试{
    输入=新扫描仪(更新);
    }catch(filenotfounde异常){
    System.out.println(“读取文件时出错,”+filename1);
    }
    FileWriter日志=null;
    PrintWriter输出=null;
    试一试{
    log=新的FileWriter(filename2,true);
    输出=新的PrintWriter(日志);
    }捕获(例外e){
    System.out.println(“创建日志文件时出错,”+filename2);
    }
    int i=0;
    int num=0;
    字符串s;
    while(input!=null&&input.hasNext()&&i=0&&num

    我已经使用一些虚拟值测试了这段代码。如果在使用过程中遇到任何问题,请随时发表评论。

    您的代码需要以下改进:

  • 用于在追加模式下打开日志文件
  • 使用
    string1.equals(string2)
    而不是
    string1==string2
    string1
    string2
    进行比较
  • 在使用
    nextInt()
    之前,请先使用
    hasNextInt()
  • 使用
    while
    循环的终止条件,考虑所有方面,例如可能使其无限运行的值和
    while
    循环中的代码使用的值
  • 以下是完整的代码:

    public static void updateInventory(String filename1, String filename2, String[] name1, int[] quantity1) {
        File updated = new File(filename1);
        Scanner input = null;
        try {
            input = new Scanner(updated);
        } catch (FileNotFoundException e) {
            System.out.println("Error reading file, " + filename1);
        }
        FileWriter log = null;
        PrintWriter output = null;
        try {
            log = new FileWriter(filename2, true);
            output = new PrintWriter(log);
        } catch (Exception e) {
            System.out.println("Error creating log file, " + filename2);
        }
        int i = 0;
        int num = 0;
        String s;
        while (input != null && input.hasNext() && i < name1.length && i < quantity1.length) {
            s = input.next();
            s = s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase();
            if (s.equals(name1[i]) && input.hasNextInt()) {
                num = input.nextInt();
                if (num >= 0 && num < quantity1[i]) {
                    quantity1[i] -= num;
                }
            }
            if (i == name1.length) {
                output.println("ERROR: Item " + s + " not found");
            }
            if (num < 0) {
                output.println("ERROR: Invalid amount requested (" + num + ")");
            }
            i++;
        }
        output.close();
        input.close();
    }
    
    公共静态void updateInventory(字符串filename1、字符串filename2、字符串[]name1、int[]数量1){
    文件更新=新文件(文件名1);
    扫描仪输入=空;
    试一试{
    输入=新扫描仪(更新);
    }catch(filenotfounde异常){
    System.out.println(“读取文件时出错,”+filename1);
    }
    FileWriter日志=null;
    PrintWriter输出=null;
    试一试{
    log=新的FileWriter(filename2,true);
    输出=新的PrintWriter(日志);
    }捕获(例外e){
    System.out.println(“创建日志文件时出错,”+filename2);
    }
    int i=0;
    int num=0;
    字符串s;
    while(input!=null&&input.hasNext()&&i=0&&num

    我已经使用一些虚拟值测试了这段代码。如果您在使用时遇到任何问题,请随时发表评论。

    请发布一些您迄今为止尝试过的代码。“是否可以在读取另一个.txt文件时编写一个.txt文件?”--是的,当然有可能。我在PrintWriter output=new PrintWriter(log)行之后添加了代码@plochie),它会删除另一个文件的内容…请发布一些您迄今为止尝试过的代码。“是否可以在读取另一个.txt文件时写入.txt文件?”--是的,当然有可能。我在PrintWriter output=new PrintWriter(log)行后添加了代码@plochie,它会删除另一个文件的内容。