- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
出于培训目的,我正在编写一个用于读取/写入/修改文本文件的类。
我的问题是我的功能之一(openFile)的目的是将文本文件内容转换为ArrayList似乎是错误的:每行的第一个字符消失了。
这是Java文件,测试脚本和测试脚本结果:
TextFile.java
/**
*
*/
package files;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
/**
* @author Erwan GEORGET <egeorget@openmailbox.org>
* @licence GPLv3
*
*/
public class TextFile {
//-----------------------------------Données------------------------------------
ArrayList<String> arrayString;
//--------------------------------Constructeurs---------------------------------
public TextFile(){//ok
this.arrayString = new ArrayList<String>();
}
//------------------------------Méthodes publiques------------------------------
//---------Modificateurs locaux--------
public void addText(String text){//ok
arrayString.add(text);
}
public String readTextAt(int index){//ok
return arrayString.get(index);
}
public void rmTextAt(int index){ //ok
this.arrayString.remove(index);
}
//---------------écriture---------------
public void writeToNewFile(String chemin) throws IOException{//ok
PrintWriter bw = new PrintWriter(new BufferedWriter(new FileWriter(new File(chemin))));
int i=0;
while (i<this.arrayString.size()){
System.out.println(this.arrayString.get(i)+ " écrit dans le fichier "+chemin);
bw.println(this.arrayString.get(i));
i++;
}
bw.close();
}
//----------------Lecture----------------
public String readLineFromFile(String chemin, int ligne) throws IOException{
String result="EOF";
ArrayList<String> tempo = new ArrayList<String>();
tempo=openFile(chemin);
result=tempo.get(ligne);
return result;
}
public String readFromFile(String chemin) throws IOException{
String result="";
int i=0;
ArrayList<String> tempo = new ArrayList<String>();
tempo=openFile(chemin);
result=tempo.get(i);
i++;
while (i < tempo.size() ){
result=result+"\n"+tempo.get(i);
i++;
}
return result;
}
//---------------Chargement---------------
public void loadFromFile(String chemin) throws IOException{//ok
this.writeToNewFile(chemin+".old");
this.arrayString=openFile(chemin);
}
//------------------Débug-----------------
public void debug(){//ok
int i = 0;
System.out.println("Contenu de arrayString: ");
while (i < this.arrayString.size()){
System.out.println(this.arrayString.get(i));
i++;
}
}
//-------------------------------Méthodes privées-------------------------------
protected ArrayList<String> openFile(String chemin) throws IOException{//bug
ArrayList<String> result=new ArrayList<String>();
FileReader ligne = new FileReader(chemin);
BufferedReader buffer = new BufferedReader(ligne);
System.out.println("Ouverture du fichier "+chemin+"\nLecture...");
while (buffer.read() != -1){
String tempo=buffer.readLine();
System.out.println(tempo);
result.add(tempo);
}
buffer.close();
System.out.println("Fermeture du fichier "+chemin);
return result;
}
}
/**
*
*/
package files;
import java.io.*;
import java.util.*;
/**
* @author erwan
*
*/
public class TestTextFile {
/**
* @param args
* @throws IOException
* @throws InterruptedException
*/
public static void main(String[] args) throws IOException, InterruptedException {
// TODO Stub de la méthode généré automatiquement
int test=0;
TextFile file = new TextFile();
Date date = new Date();
System.out.println("-------------TEST "+test+"-------------");
test++;
System.out.println(date);
System.out.println("-------------TEST "+test+"-------------");
test++;
file.debug();
System.out.println("-------------TEST "+test+"-------------");
test++;
file.addText(date.toString()+" test 3.1");
System.out.println("Emplacement 0 de arrayString :");
System.out.println(file.readTextAt(0));
System.out.println("Emplacement 1 de arrayString :");
file.addText(date.toString()+" test 3.2");
System.out.println(file.readTextAt(1));
file.writeToNewFile("/home/erwan/data_test");
System.out.println("-------------TEST "+test+"-------------");
test++;
file.debug();
System.out.println("-------------TEST "+test+"-------------");
test++;
file.loadFromFile("/home/erwan/data_test");
file.debug();
System.out.println("-------------TEST "+test+"-------------");
test++;
Thread.sleep(2000);
date = new Date();
file.addText(date.toString()+" test 5");
file.debug();
file.writeToNewFile("/home/erwan/data_test");
System.out.println("-------------TEST "+test+"-------------");
test++;
file.rmTextAt(0);
file.debug();
System.out.println("-------------TEST "+test+"-------------");
test++;
file.rmTextAt(0);
file.debug();
System.out.println("-------------TEST "+test+"-------------");
test++;
System.out.println(file.readLineFromFile("/home/erwan/data_test",0));
System.out.println("-------------TEST "+test+"-------------");
test++;
System.out.println(file.readFromFile("/home/erwan/data_test"));
}
}
-------------TEST 0-------------
Tue Jun 03 12:04:19 CEST 2014
-------------TEST 1-------------
Contenu de arrayString:
-------------TEST 2-------------
Emplacement 0 de arrayString :
Tue Jun 03 12:04:19 CEST 2014 test 3.1
Emplacement 1 de arrayString :
Tue Jun 03 12:04:19 CEST 2014 test 3.2
Tue Jun 03 12:04:19 CEST 2014 test 3.1 écrit dans le fichier /home/erwan/data_test
Tue Jun 03 12:04:19 CEST 2014 test 3.2 écrit dans le fichier /home/erwan/data_test
-------------TEST 3-------------
Contenu de arrayString:
Tue Jun 03 12:04:19 CEST 2014 test 3.1
Tue Jun 03 12:04:19 CEST 2014 test 3.2
-------------TEST 4-------------
Tue Jun 03 12:04:19 CEST 2014 test 3.1 écrit dans le fichier /home/erwan/data_test.old
Tue Jun 03 12:04:19 CEST 2014 test 3.2 écrit dans le fichier /home/erwan/data_test.old
Ouverture du fichier /home/erwan/data_test
Lecture...
ue Jun 03 12:04:19 CEST 2014 test 3.1
ue Jun 03 12:04:19 CEST 2014 test 3.2
Fermeture du fichier /home/erwan/data_test
Contenu de arrayString:
ue Jun 03 12:04:19 CEST 2014 test 3.1
ue Jun 03 12:04:19 CEST 2014 test 3.2
-------------TEST 5-------------
Contenu de arrayString:
ue Jun 03 12:04:19 CEST 2014 test 3.1
ue Jun 03 12:04:19 CEST 2014 test 3.2
Tue Jun 03 12:04:21 CEST 2014 test 5
ue Jun 03 12:04:19 CEST 2014 test 3.1 écrit dans le fichier /home/erwan/data_test
ue Jun 03 12:04:19 CEST 2014 test 3.2 écrit dans le fichier /home/erwan/data_test
Tue Jun 03 12:04:21 CEST 2014 test 5 écrit dans le fichier /home/erwan/data_test
-------------TEST 6-------------
Contenu de arrayString:
ue Jun 03 12:04:19 CEST 2014 test 3.2
Tue Jun 03 12:04:21 CEST 2014 test 5
-------------TEST 7-------------
Contenu de arrayString:
Tue Jun 03 12:04:21 CEST 2014 test 5
-------------TEST 8-------------
Ouverture du fichier /home/erwan/data_test
Lecture...
e Jun 03 12:04:19 CEST 2014 test 3.1
e Jun 03 12:04:19 CEST 2014 test 3.2
ue Jun 03 12:04:21 CEST 2014 test 5
Fermeture du fichier /home/erwan/data_test
ue Jun 03 12:04:21 CEST 2014 test 5
-------------TEST 9-------------
Ouverture du fichier /home/erwan/data_test
Lecture...
e Jun 03 12:04:19 CEST 2014 test 3.1
e Jun 03 12:04:19 CEST 2014 test 3.2
ue Jun 03 12:04:21 CEST 2014 test 5
Fermeture du fichier /home/erwan/data_test
e Jun 03 12:04:19 CEST 2014 test 3.1
e Jun 03 12:04:19 CEST 2014 test 3.2
ue Jun 03 12:04:21 CEST 2014 test 5
最佳答案
您正在openFile()方法中使用BufferedReader,因此您处于正确的轨道。
您应该使用BufferedReader.readLine()而不是read()来一次读取一个石灰:
String nextLine = null;
while ((nextLine = buffer.readLine()) != null) {
result.add(nextLine);
}
result
是您的
ArrayList<String>
,而
buffer
是您的
BufferedReader
关于java - Java:读取时文件损坏的每一行的第一个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24012580/
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
我目前正在尝试制作一个非常简单的应用程序,它会根据一天中的时间问候。我的代码是: open System let read() = Console.Read() let readLine() = Co
我已经运行Elasticsearch服务很长时间了,但是突然遇到了以下情况 由以下原因导致:org.elasticsearch.index.translog.TranslogCorruptedExce
我对执行以下操作的 php 重定向脚本有一个奇怪的问题: 在用户的浏览器中植入 Cookie,或者读取现有 Cookie(如果有)。 将用户重定向到另一个网址(重定向的网址是原始网址中的参数,例如 h
我正在使用 iText 7.0.0(Java 风格),似乎表格单元格 HorizontalAlignment 被忽略,因为 CENTER 和 RIGHT 都不起作用。你能重现这个吗? see th
简而言之: 我有一个可以从多个线程访问的计数器变量。尽管我已经实现了多线程读/写保护,但该变量似乎仍然以不一致的方式同时写入,导致计数器结果不正确。 深入杂草: 我使用的“for 循环”会在后台触发大
我有一个 REST 项目,在访问控制服务类中保存用户的ArrayList。一切都工作正常,直到 REST Web 服务突然抛出 java.util.NoSuchElementException。单步查
已关闭。此问题不符合Stack Overflow guidelines 。它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
当我刷新页面时,我无法显示 voteUp/Down,因为如果我执行 voteUp/Down(+1 或 -1) 并刷新页面,这会再次返回 voteUp/Down (0)。过去我使用 JSON,但社区推荐
我正在为离散时间 CPU 调度模拟器编写代码。它只是生成流程并相应地安排它们。我目前正在实现 FCFS 计划。我理解离散时间模拟器的本质,但我在用 C++ 实现时遇到了麻烦。 问题出现在handleN
尝试使用 yum 部署包时出现错误: 2016-07-07 14:14:31,296 - ERROR - error: rpmdb: BDB0113 Thread/process 6723/1
我有一个简单的同步队列 template class SynchronisedQueue { public: void Enqueue(const T& d
我正在使用 hadoop 0.20.append 和 hbase 0.90.0。我将少量数据上传到 Hbase,然后出于评估目的杀死了 HMaster 和 Namenode。在此之后,我向 Hbase
我使用 symfony 框架 1.4 创建了一个网站。我正在使用 sfguard 进行身份验证。 现在,这在 WAMP (windows) 上运行良好。我可以在不同的浏览器上登录多个帐户并使用该网站。
目前我已经实现了 HashMap private static Map cached = new HashMap(); 和 Item 是一个具有属性的对象 Date expireTime 和 byte
我试图将 2 个不同的 WPF 控件绑定(bind)到 ViewModel 中的同一属性,即 CheckBox.IsChecked 和 Expander.IsExpanded。我想要实现的行为是让 C
我希望这是一个简单的问题,但我没有找到答案。 我想让 build.gradle 文件通过替换某些变量来设置我的 Spring Boot 应用程序中的版本。这与广告一样有效: def tokens =
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
这个问题在这里已经有了答案: In a fragment shader, why can't I use a flat input integer to index a uniform array o
我已经下载了 OSM 世界地图。解析时出现异常: osm bound changeset (...) changeset Exception in thread "main" org.xml.sax.
我是一名优秀的程序员,十分优秀!