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

私が見つけた解決策を共有したいと思います:

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 に答える
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 に答える