Java FileReader未读取1stCharacter
朋友们好,, 我正在制作一个程序,其中一个txt文件正在读取并显示输出。为此,我正在使用FileReader和EclipseJuno的编辑器。但是,当我这样做时,我能够读取完整的txt文件,但不能读取第一个字符。例如,假设我们有txt文件,其中: 斯巴达克斯的自由是编写的,因此编译器必须在结果中显示整个字符串。相反,它显示了斯巴达克斯的自由,因此没有显示第一个角色。这是我的密码:Java FileReader未读取1stCharacter,java,file-io,Java,File Io,朋友们好,, 我正在制作一个程序,其中一个txt文件正在读取并显示输出。为此,我正在使用FileReader和EclipseJuno的编辑器。但是,当我这样做时,我能够读取完整的txt文件,但不能读取第一个字符。例如,假设我们有txt文件,其中: 斯巴达克斯的自由是编写的,因此编译器必须在结果中显示整个字符串。相反,它显示了斯巴达克斯的自由,因此没有显示第一个角色。这是我的密码: package file; import java.io.File; import java.io.FileRea
package file;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class O
{
public static void main(String[] args) throws IOException
{
File f1=new File ("tj.txt");
FileReader f2=new FileReader(f1);
f2.read();
System.out.println("Starting TO Read");
long size=f1.length();
char[] x=new char[(int)size];
f2.read(x);
f2.close();
String s1=new String(x);
System.out.println(s1);
}
}
我的代码有什么问题,有人能帮我吗?您正在读取第一个字符,并在此处忽略它
f2.read();
删除此行,它将根据您的需要工作
长度是以字节为单位的长度,而不是字符。在您的情况下可能是相同的,但是您应该读入字节[],并使用它来构建字符串
相反,我建议
FileInputStream fis = new FileInputStream("tj.txt");
byte[] bytes = new bytes[(int) fis.getChannel().size()];
fis.read(bytes);
fis.close();
String s = new String(bytes, "UTF-8"); // or your preferred encoding.
您正在读取第一个字符,并在此处忽略它
f2.read();
删除此行,它将根据您的需要工作
长度是以字节为单位的长度,而不是字符。在您的情况下可能是相同的,但是您应该读入字节[],并使用它来构建字符串
相反,我建议
FileInputStream fis = new FileInputStream("tj.txt");
byte[] bytes = new bytes[(int) fis.getChannel().size()];
fis.read(bytes);
fis.close();
String s = new String(bytes, "UTF-8"); // or your preferred encoding.
取下第一个
f2.read();
行移除第一个
f2.read();
行因为这行:
f2.read();
您已通过F。您需要此代码:
public static void main(String[] args) throws IOException
{
File f1=new File ("tj.txt");
FileReader f2=new FileReader(f1);
System.out.println("Starting TO Read");
long size=f1.length();
char[] x=new char[(int)size];
f2.read(x);
f2.close();
String s1=new String(x);
System.out.println(s1);
}
因为这条线:
f2.read();
您已通过F。您需要此代码:
public static void main(String[] args) throws IOException
{
File f1=new File ("tj.txt");
FileReader f2=new FileReader(f1);
System.out.println("Starting TO Read");
long size=f1.length();
char[] x=new char[(int)size];
f2.read(x);
f2.close();
String s1=new String(x);
System.out.println(s1);
}
使用第一个f2.read,您读取第一个字符,但不将其存储在任何位置。使用第一个f2.read,您读取第一个字符,但不将其存储在任何位置。通过在主菜单的第三行调用f2.read,您自己正在读取/跳过该字符。您自己正在读取/跳过该字符打f2。在你的主文的第三行读。@MarkrotVeel你说得对,OP可能没有得到我的建议。更新了我的答案。@markrottveel你是对的,OP可能没有得到我的建议。更新我的答案。长度是以字节为单位的大小,而不是字符长度是字节大小,而不是你可能会考虑接受帮助你最多的答案。你可能会考虑接受帮助你最多的答案。