【问题标题】:Accessing a text file from desktop using JAVA console application使用 JAVA 控制台应用程序从桌面访问文本文件
【发布时间】:2013-06-14 11:40:07
【问题描述】:

我的桌面上有一个名为“MyText.txt”的文本文件,里面有一些内容。

由于我正在学习 JAVA,所以我想简单地创建一个控制台应用程序,该应用程序将从 txt 文件中读取内容,然后将其显示在控制台中。

但由于我是新手,所以我无法弄清楚它的工作方式。

谁能让我找到正确的方向。

我们将不胜感激。

【问题讨论】:

  • 在 google 上搜索“java 读取文本文件内容”。你会得到很多帮助
  • 已经这样做了,之后只在这里发布代码

标签: java file console-application desktop


【解决方案1】:

有很多替代方法可以做到这一点。更高级别的事情可能是使用Scanner 类。我假设,由于您正在学习 java,您可能遇到过 Scanner 类来读取控制台的输入。也可以使用Scanner同样的方式读取文件。

您可以使用Scanner#nextInt()Scanner#next() 等...方法来读取输入。您可以使用args[] 数组来获取命令行参数。

由于您没有具体说明您的数据以何种方式存储在文件中,因此很难给出一个可行的示例。

import java.util.Scanner;

public class Tester { 
  public static void main(String args[]) {
    if (args.length > 0) {
      Scanner sc = new Scanner(new File(args[0]));
      //use here the functions such as sc.nextInt() and so on
    }
  }
}

文档链接:http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html

如果您正在阅读 java 中的大文件(请参阅我对其他问题的回答):file size too big for java:

工作示例:

此程序将文件内容打印到控制台。

编译后使用java Tester yourFileName执行这个程序。

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

public class Tester { 
  public static void main(String args[]) {
    try {
      if (args.length > 0) {
        Scanner sc = new Scanner(new File(args[0]));
        while (sc.hasNext()) {
          System.out.println(sc.next());
        }
      } else {
        System.out.println("No file name given");
      }
    }
    catch(FileNotFoundException e) {
      e.printStackTrace();
    }
  }
}

【讨论】:

    【解决方案2】:

    您可以尝试以下示例来读取文件字符。

    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package io;
    
    import java.io.*;
    
    /**
    *
    * @author Nandeshwar
    */
    public class FileExample {
    
     public static void main(String[] args) {
        File inFile = new File("c:/users/toshiba/desktop/MyText.txt");
    
        FileReader ins = null;
    
        try {
            ins = new FileReader(inFile);
    
            int ch;
            while ((ch = ins.read()) != -1) {
                System.out.println((char) ch);
    
            }
        } catch (Exception e) {
            System.out.println(e);
        } finally {
            try {
                ins.close();
            } catch (Exception e) {
            }
        }
     }
    
    }
    

    【讨论】:

    • 感谢您的回复,但是我怎样才能通过仅提供文件名而不是提供硬编码的完整文件名来从桌面文件中读取内容
    • String fileName = JOptionPane.showInputDialog("输入文件名");文件 inFile = new File(fileName);写这两行,而不是 File inFile = new........
    【解决方案3】:

    这应该会有所帮助。像这样创建一个BufferedReader 对象:

    new BufferedReader(new FileReader("Location of the file"));
    

    阅读此文档,供参考:http://docs.oracle.com/javase/6/docs/api/java/io/BufferedReader.html

    【讨论】:

    • 感谢您的回复,我不想硬编码文件的位置,否则我想通过传递文件名从桌面获取文件
    • 使用 Scanner 类。将文件名作为输入字符串并将其附加到位置。字符串桌面 = "C:\Users\xyz\Desktop\"; String inputFile = 通过调用scanner.nextString() 从scanner 中获取。执行 String input = desktop + inputFile 并将此输入传递给构造函数。
    猜你喜欢
    • 2021-12-10
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多