2

我正在寻找一种方法来获取 IFile 对象的行分隔符。我当前的实现弄乱了在其他系统上编写的文件的换行符,但我严重依赖正确的偏移量和行号。

Scanner scanner = new Scanner(file.getContents());
StringBuilder stringBuilder = new StringBuilder();

while (scanner.hasNextLine()) {
   final String nextLine = scanner.nextLine();
   stringBuilder.append(nextLine + System.lineSeparator());
}
scanner.close();

Document document = new Document();
document.set(stringBuilder.toString(), document.getModificationStamp());

任何建议都非常受欢迎。

4

2 回答 2

0

org.eclipse.core.filebuffers.manipulation.ConvertLineDelimitersOperation.computeTextEdit(ITextFileBuffer, IProgressMonitor)。它使用该IDocument.getLineDelimiter(int)方法来计算文件中的行分隔符。

您可能正在查看以下内容:

ITextFileBufferManager manager = FileBuffersPlugin.getFileBufferManager();
ITextFileBuffer buffer = manager.getTextFileBuffer(file.getLocation());
IDocument document = buffer.getDocument();
int lineCount = document.getNumberOfLines();
for(int i = 0; i < lineCount; i++) {
    String delimiter = document.getLineDelimiter(i);
    // your work here
}
于 2013-02-19T16:25:24.533 回答
0

我想分享一个我偶然发现的解决方案:

InputStream stream = file.getContents();
Scanner s = new Scanner(stream);
s.useDelimiter("\\A");

String content = s.hasNext() ? s.next() : null;

try {
    stream.close();
s.close();
 } catch (IOException e) {      
 }

 if (content == null) {
return null;
 }

 IDocument document = new Document();
 document.set(content);
于 2013-02-19T16:11:38.450 回答