在 Java 中读取和写入同一个文件

2024-02-23

我想读自criteria.txt文件,以标记化并在同一文件的末尾附加标记。程序抛出异常:No file found!我不知道我的错误在哪里。任何建议都会对我有帮助。先感谢您!

这是我的代码:

import java.io.*;
import java.util.StringTokenizer;

public class Test
{
    private FileReader fr;
    private BufferedReader br;
    private FileWriter fw;
    private BufferedWriter bw;
    private StringTokenizer strtok;
    private String s;

    //constructor
    public Test()  
    {
        try
        {
            fw=new FileWriter("criteria.txt", true);
            bw=new BufferedWriter(fw);

            try
            {
                fr=new FileReader("criteria.txt");
                br=new BufferedReader(fr);

                while((s=br.readLine())!=null)
                {
                    strtok=new StringTokenizer(s," ");
                    while(strtok.hasMoreTokens())
                    {
                        bw.write("\n"+strtok.nextToken());
                    }
                    br.close();
                }
            }
            catch(FileNotFoundException e)
            {
                System.out.println("File was not found!");
            }
            catch(IOException e)    
            {
                System.out.println("No file found!");
            }

            bw.close();
        }
        catch(FileNotFoundException e)
        {
            System.out.println("Error1!");
        }
        catch(IOException e)    
        {
            System.out.println("Error2!");
        }
    }   

    public static void main(String[] args) 
    {
        Test t=new Test();
    }
}

完成读取文件后(即 while 循环之后),您需要关闭阅读器。目前,您在阅读第一行后将其关闭,这会导致“IOException: Stream closed“当它尝试读取第二行时。

改成:

while((s=br.readLine())!=null)
{
    strtok=new StringTokenizer(s," ");
    while(strtok.hasMoreTokens())
    {
        bw.write("\n"+strtok.nextToken());
    }
    //br.close(); <----- move this to outside the while loop
}
br.close();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Java 中读取和写入同一个文件 的相关文章

随机推荐

  • 在 Eclipse 中调试 Playframework

    我刚刚从 Netbeans 迁移到 Eclipse 在 Netbeans 中 我可以开箱即用地调试 Playframework 应用程序 然而 在 Eclipse 中 似乎很难配置它来调试 Web 应用程序 具体来说是 Playframew
  • 如何点击 Selenium WebDriver 中的隐藏元素?

    我有一个显示一些记录的网格 当我单击一条记录并检查该元素时 显示它是隐藏的 但在网格中可见 我的 HTML 是 a href http 192 168 1 6 eprint prod 3 8 settings othercost add a
  • 如何更新到 mingw-gcc 4.8.2?

    我想在 c 11 中使用正则表达式 gcc 4 8 2 支持它 但 MinGW 安装程序最高仅支持 gcc 4 8 1 如何将其更新到 gcc 4 8 2 您可以自己手动安装 有一个 MinGW w64 发行版4 8 2 可在此处获取 ht
  • 赋值语句中的“others=>'0'”是什么意思?

    cmd register process rst n clk begin if rst n 0 then cmd r lt others gt 0 elsif clk event and clk 1 then cmd r lt end if
  • 如何命名 Rails 中的路线

    我有一些看起来像这样的路线 match hotels action id controller gt hotel action gt a z i id gt 0 9 i 我想用类似的东西酒店 不喜欢 路径我的代码中的某处引用了 hotels
  • 如何使用 Javascript 找出短 URL 指向的位置

    我创建了一个短网址 比如说https my short link foo 即指向https my other website bar 如何在浏览器中使用 javascript 方法检索此 url 我使用的是角度 这将取决于如何my shor
  • 删除 Facebook 评论插件下方的空白

    看看这个链接 http www equispot com horses for sale 416 向下滚动一点 您应该会看到一个 Facebook 评论插件 其下方嵌入了 Google 地图 我的问题是 评论插件的底部和地图的顶部之间有大量
  • FileInputStream 如何获取 File 的内容?

    我有一个文件f我需要把它影响成FileInputStream fs File f new File C dir foo txt FileInputStream fs FileInputStream f 但我收到这个错误 Cannot cas
  • 从 1.5 更新到 Android Studio 2.0 后,ndk 语法高亮不起作用或可能被破坏

    编辑器窗口中 C C 代码的语法突出显示在 AS 1 5 中运行良好 但从 AS 1 5 更新到 2 0 后 即使使用示例 HelloJNI 项目也无法正常工作 尝试使用保存的设置 重置默认设置以及全新下载和安装 AS 2 0 但没有任何效
  • 如何将 Assetic 用于 requireJs

    我正在尝试在 synfony2 项目中使用 require js 这是主树枝文件中的代码 文件vendor js require js已正确加载 但对于文件bundles web js main js我收到消息 未捕获的错误 模块加载超时
  • NextJS 动态路由与模态重新加载导致覆盖背景消失

    我有一个非常简单的 NextJS 应用程序 打开页面将更新 URL 但不会触发导航 而是在模式中显示内容 URL 仍然反映实际页面位置 任何刷新都会将用户带到那里 当模式打开时 我仍然希望保留页面上的原始内容在背景中淡出 并且模式应该出现在
  • 可以根据另一个单元格的值锁定单元格范围吗?

    我正在使用跟踪器来测试新的更改以及何时测试 如果新更改不适用 我不想删除它 我想禁用 并变灰 所有可用于选择完成日期的单元格 但仅限于该行 我尝试过使用以下方法 但没有任何运气 工作表上的条件格式 进行更改时执行的 VBA 代码 数据验证
  • BABEL:未知选项:base.Children

    我刚刚做了一个npm update并获得了一些新的软件包版本 这破坏了我的构建 使我无法使用默认值updateSchema js from https github com relayjs relay starter kit blob ma
  • 使用 nutch REST api 的 Nutch 弹性索引器中的未知问题

    我试图使用 REST 端点公开 nutch 但在索引器阶段遇到了问题 我正在使用 elasticsearch 索引编写器将文档索引到 ES 我使用了 NUTCH HOME runtime deploy bin nutch startserv
  • 如何通过Webpack和6to5使用带有es6模块的npm包?

    假设我想在我的项目 或任何给定的 npm 包 中使用 Immutable 我有npm install编辑了它 所以它在node modules 当然 它有 CommonJS 导出 然而 我想在我的项目中使用 es6 模块 我使用 Webpa
  • 如何在 AssemblyResolve 事件之前在运行时加载程序集?

    实际上 我尝试在我的解决方案中实现某种 静态链接 程序集 所以我尝试了以下方法 使用 CopyLocal false 添加对我的程序集的引用 使用 添加为链接 将 dll 文件本身添加到我的解决方案中 使用 添加资源 添加现有文件 将 dl
  • 尝试根据当前 URL 中的当前字符串向属性添加类

    我整个早上都在努力让它发挥作用 但没有成功 如果我执行以下代码 persist header a each function var this this if window location href indexOf signage 1 t
  • 使用 JInternalFrame 和一些按钮

    我们可以使用一个JInternalFame https docs oracle com javase tutorial uiswing components internalframe html主框架中有一个按钮 该框架包含一个JDeskt
  • 如何让 CMake 在生成 Visual Studio 解决方案后执行一些脚本

    我正在使用 CMake 来构建一个项目 我想在 CMake 生成解决方案后执行一些脚本 比如 python 脚本 这样我就不必每次都手动执行它 我正在使用 Cmake 2 8 有谁知道 Cmake 为此目的提供的任何 userhook 或其
  • 在 Java 中读取和写入同一个文件

    我想读自criteria txt文件 以标记化并在同一文件的末尾附加标记 程序抛出异常 No file found 我不知道我的错误在哪里 任何建议都会对我有帮助 先感谢您 这是我的代码 import java io import java