Java 如何将此主方法更改为按顺序读取文件
如何按顺序读取文件Java 如何将此主方法更改为按顺序读取文件,java,file,jakarta-ee,file-io,Java,File,Jakarta Ee,File Io,如何按顺序读取文件 public static void main(String[] args){ String fichier ="E:\\fichiers\\test.txt"; int tab[] = {2, 2, 20, 8, 20, 8, 4, 3, 7, 3, 3, 3, 18, 139}; String tabS[] = new String[14]; for(int i=0; i<tab.length; i++){ c
public static void main(String[] args){
String fichier ="E:\\fichiers\\test.txt";
int tab[] = {2, 2, 20, 8, 20, 8, 4, 3, 7, 3, 3, 3, 18, 139};
String tabS[] = new String[14];
for(int i=0; i<tab.length; i++){
char cbuf[] = new char[tab[i]];
try {
InputStream ips = new FileInputStream(fichier);
InputStreamReader ipsr = new InputStreamReader(ips);
BufferedReader br = new BufferedReader(ipsr);
br.read(cbuf, 0, tab[i]);
tabS[i] = new String(cbuf);
System.out.println(tabS[i]);
} catch (Exception e){
System.out.println(e.toString());
}
}
}
当我运行readMe方法时,我得到以下结果:
这里的问题是,每次他开始读取文件时,它都会开始定位0
有什么帮助吗?在我看来,在创建流之后,您只需要在try/catch中移动for循环
public static void main(String[] args){
String fichier ="E:\\fichiers\\test.txt";
int tab[] = {2, 2, 20, 8, 20, 8, 4, 3, 7, 3, 3, 3, 18, 139};
String tabS[] = new String[14];
try {
InputStream ips = new FileInputStream(fichier);
InputStreamReader ipsr = new InputStreamReader(ips);
BufferedReader br = new BufferedReader(ipsr);
for(int i=0; i<tab.length; i++){
char cbuf[] = new char[tab[i]];
br.read(cbuf, 0, tab[i]);
tabS[i] = new String(cbuf);
System.out.println(tabS[i]);
}
} catch (Exception e){
System.out.println(e.toString());
}
}
publicstaticvoidmain(字符串[]args){
字符串fichier=“E:\\fichiers\\test.txt”;
int tab[]={2,2,20,8,20,8,4,3,7,3,3,18,139};
字符串选项卡[]=新字符串[14];
试一试{
InputStream ips=新文件InputStream(fichier);
InputStreamReader ipsr=新的InputStreamReader(ips);
BufferedReader br=新的BufferedReader(ipsr);
for(int i=0;i在我看来,在创建流之后,您只需要在try/catch中移动for循环
public static void main(String[] args){
String fichier ="E:\\fichiers\\test.txt";
int tab[] = {2, 2, 20, 8, 20, 8, 4, 3, 7, 3, 3, 3, 18, 139};
String tabS[] = new String[14];
try {
InputStream ips = new FileInputStream(fichier);
InputStreamReader ipsr = new InputStreamReader(ips);
BufferedReader br = new BufferedReader(ipsr);
for(int i=0; i<tab.length; i++){
char cbuf[] = new char[tab[i]];
br.read(cbuf, 0, tab[i]);
tabS[i] = new String(cbuf);
System.out.println(tabS[i]);
}
} catch (Exception e){
System.out.println(e.toString());
}
}
publicstaticvoidmain(字符串[]args){
字符串fichier=“E:\\fichiers\\test.txt”;
int tab[]={2,2,20,8,20,8,4,3,7,3,3,18,139};
字符串选项卡[]=新字符串[14];
试一试{
InputStream ips=新文件InputStream(fichier);
InputStreamReader ipsr=新的InputStreamReader(ips);
BufferedReader br=新的BufferedReader(ipsr);
对于(int i=0;i看你有:
int tab[] = {2, 2, 20, 8, 20, 8, 4, 3, 7, 3, 3, 3, 18, 139};
InputStream ips = new FileInputStream(fichier);
InputStreamReader ipsr = new InputStreamReader(ips);
BufferedReader br = new BufferedReader(ipsr);
您的输出是:
BO // length 2
BO // length 2
BOUUUUUUUUUUUUUUUUUU // length 20
BOUUUUUU // length 8
BOUUUUUUUUUUUUUUUUUU
BOUUUUUU
BOUU
BOU
BOUUUUU
BOU
BOU
BOU
BOUUUUUUUUUUUUUUUU
BOUUUUUUUUUUUUUUUUUUUUUU!
考虑到:
br.read(cbuf, 0, tab[i]);
tabS[i] = new String(cbuf);
System.out.println(tabS[i]);
它在每个迭代中从位置0开始,因为您有:
int tab[] = {2, 2, 20, 8, 20, 8, 4, 3, 7, 3, 3, 3, 18, 139};
InputStream ips = new FileInputStream(fichier);
InputStreamReader ipsr = new InputStreamReader(ips);
BufferedReader br = new BufferedReader(ipsr);
在for
循环中。只需将其从循环中删除即可纠正这种情况:
try
{
InputStream ips = new FileInputStream(fichier);
InputStreamReader ipsr = new InputStreamReader(ips);
BufferedReader br = new BufferedReader(ipsr);
for(int i=0; i<tab.length; i++)
{
char cbuf[] = new char[tab[i]];
br.read(cbuf, 0, tab[i]);
tabS[i] = new String(cbuf);
System.out.println(tabS[i]);
}
}
catch (Exception e)
{
System.out.println(e.toString());
}
试试看
{
InputStream ips=新文件InputStream(fichier);
InputStreamReader ipsr=新的InputStreamReader(ips);
BufferedReader br=新的BufferedReader(ipsr);
对于(int i=0;i看你有:
int tab[] = {2, 2, 20, 8, 20, 8, 4, 3, 7, 3, 3, 3, 18, 139};
InputStream ips = new FileInputStream(fichier);
InputStreamReader ipsr = new InputStreamReader(ips);
BufferedReader br = new BufferedReader(ipsr);
您的输出是:
BO // length 2
BO // length 2
BOUUUUUUUUUUUUUUUUUU // length 20
BOUUUUUU // length 8
BOUUUUUUUUUUUUUUUUUU
BOUUUUUU
BOUU
BOU
BOUUUUU
BOU
BOU
BOU
BOUUUUUUUUUUUUUUUU
BOUUUUUUUUUUUUUUUUUUUUUU!
考虑到:
br.read(cbuf, 0, tab[i]);
tabS[i] = new String(cbuf);
System.out.println(tabS[i]);
它在每个迭代中从位置0开始,因为您有:
int tab[] = {2, 2, 20, 8, 20, 8, 4, 3, 7, 3, 3, 3, 18, 139};
InputStream ips = new FileInputStream(fichier);
InputStreamReader ipsr = new InputStreamReader(ips);
BufferedReader br = new BufferedReader(ipsr);
在for
循环中。只需将其从循环中删除即可纠正这种情况:
try
{
InputStream ips = new FileInputStream(fichier);
InputStreamReader ipsr = new InputStreamReader(ips);
BufferedReader br = new BufferedReader(ipsr);
for(int i=0; i<tab.length; i++)
{
char cbuf[] = new char[tab[i]];
br.read(cbuf, 0, tab[i]);
tabS[i] = new String(cbuf);
System.out.println(tabS[i]);
}
}
catch (Exception e)
{
System.out.println(e.toString());
}
试试看
{
InputStream ips=新文件InputStream(fichier);
InputStreamReader ipsr=新的InputStreamReader(ips);
BufferedReader br=新的BufferedReader(ipsr);
对于(int i=0;iIt完全不清楚您试图在这里实现什么…但是此代码以多种方式被破坏。看起来您的程序正在完全按照您的要求执行:每次通过循环时,打开文件(从文件开头开始),读取一定数量的字符,然后打印出来。您希望实现什么?完全不清楚您在这里试图实现什么…但此代码以多种方式被破坏。看起来您的程序正按照您的要求执行:每次通过循环,打开文件(从文件开头开始),读一些字符,然后打印出来。你希望达到什么目的?