Java中的readAllLines Charset

时间:2013-10-19 17:29:30

标签: java

更新:感谢大家的快速回复。我已经解决了Charset问题,但是现在发生了一件我根本不理解的事情。这是我的代码:

import java.io.*;
import java.nio.file.*;
import java.nio.charset.*;
public class readConvertSeq{
    private static String[] getFile(Path file){
        String[] fileArray = (String[])Files.readAllLines(file, StandardCharsets.US_ASCII).toArray();
        return fileArray;
    }   
    public static void main(String[] args){
        String[] test = readConvertSeq.getFile(Paths.get(args[0]));
        int i;
        for(i = 0; i < test.length; i++){
            System.out.println(test[i]);
        }   
    }   
}  

这是错误:

readConvertSeq.java:6: error: unreported exception IOException; must be caught or declared to be thrown
    String[] fileArray = (String[])Files.readAllLines(file, StandardCharsets.US_ASCII).toArray();

我只是想从文件中获取一个字符串数组,而且我对Java的迂腐感到非常沮丧。这是我的代码:

import java.io.*;
import java.nio.file.*;
import java.nio.charset.*;
public class readConvertSeq{
    private static String[] getFile(Path file){
        String[] fileArray = Files.readAllLines(file, Charset("US-ASCII")).toArray();
        return fileArray;
    }   
    public static void main(String[] args){
        String[] test = readConvertSeq.getFile(Paths.get(args[0]));
        int i;
        for(i = 0; i < test.length; i++){
            System.out.println(test[i]);
        }   
    }   
}   

它给了我这个:

readConvertSeq.java:6: error: cannot find symbol
    String[] fileArray = Files.readAllLines(file, Charset("US-ASCII")).toArray();
                                                  ^
  symbol:   method Charset(String)
  location: class readConvertSeq

我确信我也犯了其他一些错误,所以请随时给我任何建议。

4 个答案:

答案 0 :(得分:9)

Charset是一个抽象类,因此您无法使用 new 关键字对其进行实例化。

要在Java 1.7中使用StandardCharsets.US_ASCII

获取字符集

答案 1 :(得分:5)

使用new运算符调用Java中的构造函数,因此Charset("US-ASCII")不是有效语句。 此外,Charset的构造函数受到保护,因此您必须使用静态工厂方法来创建它:Charset.forName("US-ASCII")

答案 2 :(得分:3)

您需要进行以下更改

String[] fileArray = (String[]) Files.readAllLines(file.toPath(), Charset.forName("US-ASCII")).toArray();
                     ^^^^^ - Cast required                        ^^^^ - Get Charset using forName            

请参阅Files.readAllLines(Path, Charset)的文档。

答案 3 :(得分:2)

Charset没有公共构造函数,因此您必须使用静态工厂方法Charset#forName