Использование java.nio. Files вместе с java.nio.file. StandardOpenOption
PrintWriter out = null;
BufferedWriter bufWriter;
try{
bufWriter =
Files.newBufferedWriter(
Paths.get("log.txt"),
Charset.forName("UTF8"),
StandardOpenOption.WRITE,
StandardOpenOption.APPEND,
StandardOpenOption.CREATE);
out = new PrintWriter(bufWriter, true);
}catch(IOException e){
//Oh, no! Failed to create PrintWriter
}
//After successful creation of PrintWriter
out.println("Text to be appended");
//After done writing, remember to close!
out.close();
Это создает файл BufferedWriter
, используя файлы , который принимает параметры StandardOpenOption
и авто-промывку PrintWriter
из результирующего BufferedWriter
. PrintWriter
println()
, затем может быть вызван для записи в файл.
Параметры StandardOpenOption
, используемые в этом коде: открывает файл для записи, только присоединяется к файлу и создает файл, если он не существует.
Paths.get("path here")
можно заменить на new File("path here").toPath()
. И Charset.forName("charset name")
можно изменить, чтобы разместить желаемый Charset
.
Если у вас возникли проблемы с созданием нового файла .netrc, убедитесь, что он находится в вашем каталоге HOME (cd ~ /), убедитесь, что он доступен для чтения вами (chmod 600 ~ / .netrc), и убедитесь, что он выглядит следующим образом. это:
машина github.com
логин yourgithublogin
пароль yourgithubpassword
Похоже, вы пытаетесь протолкнуть, используя « протокол smart http (s) », который GitHub теперь поддерживает .
Предположим, здесь у вас нет проблем с прокси или брандмауэром.
Какой у вас адрес удаленного вышестоящего репо?
(какие списки git remote -v show
?)
Я бы порекомендовал:
~ / .netrc
с machine github.com login your_github_login password your_github_password
git clone https://github.com/your_github_login/gitrepo.git
и протолкните этот экземпляр. Примечание: как комментирует Нуфал Ибрагим , вы можете использовать ssh (если порт ssh не заблокирован, оставляя вас только с соединениями http / https)
git clone ssh://user@server:project.git
У меня была та же проблема, и я считаю, что это связано с размером репо (отредактированного или размера определенного файла), который вы пытаетесь отправить.
По сути, я смог создать новые репозитории и отправить их на github. Но существующий не сработает.
Код ошибки HTTP, кажется, поддерживает меня, это ошибка «Требуется длина». Так что, возможно, он слишком велик, чтобы вычислить или оценить, что макс. Кто знает.
РЕДАКТИРОВАТЬ
Я обнаружил, что проблема может быть файлы большого размера. у меня было одно обновление что не будет толкать, даже если бы я успешные толчки до этой точки. В коммите был только один файл но это оказалось 1,6 МБ
. Поэтому я добавил следующее изменение конфигурации
git config http.postBuffer 524288000
Чтобы разрешить размер файла до 500 МБ и тогда мой толчок сработал. Возможно, это было что это была проблема изначально с отправкой большого репо через http протокол.
КОНЕЦ РЕДАКТИРОВАНИЯ
способ, которым я мог заставить его работать (РЕДАКТИРОВАТЬ до того, как я изменил postBuffer), заключался в том, чтобы запаковать мой репозиторий, скопировать его на машину, которая может выполнять git через ssh, и отправить его на github. Затем, когда вы пытаетесь выполнить push/pull с исходного сервера, он должен работать через https. (поскольку это гораздо меньший объем данных, чем исходный толчок).
Надеюсь, это поможет.